Bug 514634 General Improvement

Support PlantUML Extension for FML (xLIA) model graphical visualization

Upgrade minimal Java Execution Environment from 1.8 to the Java 11 (LTS)
Upgrade Eclipse Target Platform from 2019-09 to 2021-03

Change-Id: Id7f79984f512ac56b4a2089a576d570844d50c9e
diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/.classpath b/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/.classpath
index 0215967..901d118 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/.classpath
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/.classpath
@@ -1,7 +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"/>

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

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

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

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

+	<classpathentry kind="output" path="target/classes"/>

 </classpath>

diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/META-INF/MANIFEST.MF b/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/META-INF/MANIFEST.MF
index c3c737a..2e5c2b4 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/META-INF/MANIFEST.MF
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph/META-INF/MANIFEST.MF
@@ -9,11 +9,7 @@
  org.eclipse.core.resources,
  org.eclipse.efm.formalml.ecore,
  org.eclipse.ui.workbench
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Automatic-Module-Name: org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %providerName
-Export-Package: org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph.generator,
- org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph.mocc.xlia,
- org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph.test,
- org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph.test.publi
diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/.classpath b/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/.classpath
index b862a29..ca3785c 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/.classpath
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/META-INF/MANIFEST.MF b/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/META-INF/MANIFEST.MF
index 9a1b976..4b3cfad 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/META-INF/MANIFEST.MF
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia.test.sd/META-INF/MANIFEST.MF
@@ -3,4 +3,4 @@
 Bundle-Name: Sd
 Bundle-SymbolicName: org.eclipse.efm.modeling.codegen.xlia.test.sd
 Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.classpath b/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.classpath
index 2f5ffb2..e769fec 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.classpath
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="xtend-gen"/>
diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.settings/org.eclipse.jdt.core.prefs b/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.settings/org.eclipse.jdt.core.prefs
index 0c68a61..7adc0fb 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/META-INF/MANIFEST.MF b/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/META-INF/MANIFEST.MF
index 0b08875..77e81f2 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/META-INF/MANIFEST.MF
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia.ui/META-INF/MANIFEST.MF
@@ -21,6 +21,6 @@
  org.eclipse.papyrus.designer.languages.common.base,
  org.eclipse.papyrus.designer.languages.common.extensionpoints,
  org.eclipse.efm.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.efm.formalml.xtext.generator
diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia/.classpath b/codegen/org.eclipse.efm.modeling.codegen.xlia/.classpath
index f538363..4bf9079 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia/.classpath
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia/.classpath
@@ -1,7 +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.8"/>

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

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

-	<classpathentry excluding="org/eclipse/efm/modeling/codegen/xlia/interaction/TransformConstraint.java|org/eclipse/efm/modeling/codegen/xlia/interaction/SdUtil.java|org/eclipse/efm/modeling/codegen/xlia/interaction/SdSystemBehavior.java" kind="src" path="src"/>

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

 	<classpathentry kind="output" path="target/classes"/>

 </classpath>

diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia/.settings/org.eclipse.jdt.core.prefs b/codegen/org.eclipse.efm.modeling.codegen.xlia/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia/.settings/org.eclipse.jdt.core.prefs
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/codegen/org.eclipse.efm.modeling.codegen.xlia/META-INF/MANIFEST.MF b/codegen/org.eclipse.efm.modeling.codegen.xlia/META-INF/MANIFEST.MF
index 9f5f8f8..0c72bd7 100644
--- a/codegen/org.eclipse.efm.modeling.codegen.xlia/META-INF/MANIFEST.MF
+++ b/codegen/org.eclipse.efm.modeling.codegen.xlia/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
  org.eclipse.uml2.uml,
  org.eclipse.efm.formalml,
  org.eclipse.efm.formalml.ecore
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.efm.modeling.codegen.scxml,
  org.eclipse.efm.modeling.codegen.xlia.core,
diff --git a/core/org.eclipse.efm.formalml.service.types/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.efm.formalml.service.types/.settings/org.eclipse.jdt.core.prefs
index 295926d..e2860e9 100644
--- a/core/org.eclipse.efm.formalml.service.types/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.efm.formalml.service.types/.settings/org.eclipse.jdt.core.prefs
@@ -4,4 +4,5 @@
 org.eclipse.jdt.core.compiler.compliance=1.8

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.release=disabled

 org.eclipse.jdt.core.compiler.source=1.8

diff --git a/core/org.eclipse.efm.formalml.service.types/META-INF/MANIFEST.MF b/core/org.eclipse.efm.formalml.service.types/META-INF/MANIFEST.MF
index eb03170..e01cc93 100644
--- a/core/org.eclipse.efm.formalml.service.types/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.efm.formalml.service.types/META-INF/MANIFEST.MF
@@ -3,9 +3,12 @@
 Bundle-Name: Types
 Bundle-SymbolicName: org.eclipse.efm.formalml.service.types;singleton:=true
 Bundle-Version: 0.0.1.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Require-Bundle: org.eclipse.papyrus.infra.types.core,
  org.eclipse.papyrus.views.properties,
  org.eclipse.papyrus.infra.newchild,
  org.eclipse.uml2.uml;bundle-version="5.2.0",
  org.eclipse.efm.formalml
+Import-Package: org.eclipse.gmf.runtime.common.core.command,
+ org.eclipse.gmf.runtime.emf.type.core.edithelper,
+ org.eclipse.gmf.runtime.emf.type.core.requests
diff --git a/core/org.eclipse.efm.formalml.tests/.classpath b/core/org.eclipse.efm.formalml.tests/.classpath
index 95f1f75..3b3f47c 100644
--- a/core/org.eclipse.efm.formalml.tests/.classpath
+++ b/core/org.eclipse.efm.formalml.tests/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 		<attributes>

diff --git a/core/org.eclipse.efm.formalml.tests/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.efm.formalml.tests/.settings/org.eclipse.jdt.core.prefs
index 0c68a61..7adc0fb 100644
--- a/core/org.eclipse.efm.formalml.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.efm.formalml.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/core/org.eclipse.efm.formalml.tests/META-INF/MANIFEST.MF b/core/org.eclipse.efm.formalml.tests/META-INF/MANIFEST.MF
index 343cbcb..eebdd0a 100644
--- a/core/org.eclipse.efm.formalml.tests/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.efm.formalml.tests/META-INF/MANIFEST.MF
@@ -13,6 +13,5 @@
  org.eclipse.ui.workbench,
  org.eclipse.osgi,
  org.eclipse.core.runtime;bundle-version="3.12.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.pde.internal.core.plugin
diff --git a/core/org.eclipse.efm.formalml/.classpath b/core/org.eclipse.efm.formalml/.classpath
index b6058b8..8ad9193 100644
--- a/core/org.eclipse.efm.formalml/.classpath
+++ b/core/org.eclipse.efm.formalml/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen/"/>

diff --git a/core/org.eclipse.efm.formalml/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.efm.formalml/.settings/org.eclipse.jdt.core.prefs
index a698e59..a58ebdc 100644
--- a/core/org.eclipse.efm.formalml/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.efm.formalml/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,15 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/core/org.eclipse.efm.formalml/META-INF/MANIFEST.MF b/core/org.eclipse.efm.formalml/META-INF/MANIFEST.MF
index 9e7abd2..f140c36 100644
--- a/core/org.eclipse.efm.formalml/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.efm.formalml/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
 Bundle-ClassPath: .
 Bundle-Vendor: CEA LIST
 Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.efm.modeling.formalml,
  org.eclipse.efm.modeling.formalml.helpers,
  org.eclipse.efm.modeling.formalml.impl,
diff --git a/core/org.eclipse.efm.modeling/.classpath b/core/org.eclipse.efm.modeling/.classpath
index 8c8a32c..d0b112c 100644
--- a/core/org.eclipse.efm.modeling/.classpath
+++ b/core/org.eclipse.efm.modeling/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src-gen/"/>
 	<classpathentry kind="src" path="src/main/java"/>
diff --git a/core/org.eclipse.efm.modeling/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.efm.modeling/.settings/org.eclipse.jdt.core.prefs
index a698e59..a58ebdc 100644
--- a/core/org.eclipse.efm.modeling/.settings/org.eclipse.jdt.core.prefs
+++ b/core/org.eclipse.efm.modeling/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,15 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/core/org.eclipse.efm.modeling/META-INF/MANIFEST.MF b/core/org.eclipse.efm.modeling/META-INF/MANIFEST.MF
index 58d844b..9e22ac5 100644
--- a/core/org.eclipse.efm.modeling/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.efm.modeling/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
  org.eclipse.uml2.types;visibility:=reexport;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.uml2.uml;visibility:=reexport;bundle-version="[5.1.0,6.0.0)",
  org.eclipse.uml2.uml.resources;bundle-version="[5.1.0,6.0.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.efm.modeling
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
diff --git a/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/.settings/org.eclipse.jdt.core.prefs b/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/.settings/org.eclipse.jdt.core.prefs
index 295926d..e2860e9 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/.settings/org.eclipse.jdt.core.prefs
+++ b/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/.settings/org.eclipse.jdt.core.prefs
@@ -4,4 +4,5 @@
 org.eclipse.jdt.core.compiler.compliance=1.8

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.release=disabled

 org.eclipse.jdt.core.compiler.source=1.8

diff --git a/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/META-INF/MANIFEST.MF b/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/META-INF/MANIFEST.MF
index a403a51..60d3235 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/META-INF/MANIFEST.MF
+++ b/diagram/org.eclipse.efm.modeling.diagram.blockdefinition/META-INF/MANIFEST.MF
@@ -10,5 +10,5 @@
  org.eclipse.efm.formalml.service.types;bundle-version="[0.0.1,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="2.0.0",
  org.eclipse.papyrus.uml.diagram.composite;bundle-version="2.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
diff --git a/diagram/org.eclipse.efm.modeling.diagram.common/.settings/org.eclipse.jdt.core.prefs b/diagram/org.eclipse.efm.modeling.diagram.common/.settings/org.eclipse.jdt.core.prefs
index 295926d..e2860e9 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.common/.settings/org.eclipse.jdt.core.prefs
+++ b/diagram/org.eclipse.efm.modeling.diagram.common/.settings/org.eclipse.jdt.core.prefs
@@ -4,4 +4,5 @@
 org.eclipse.jdt.core.compiler.compliance=1.8

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.release=disabled

 org.eclipse.jdt.core.compiler.source=1.8

diff --git a/diagram/org.eclipse.efm.modeling.diagram.common/META-INF/MANIFEST.MF b/diagram/org.eclipse.efm.modeling.diagram.common/META-INF/MANIFEST.MF
index 077a150..af03a78 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.common/META-INF/MANIFEST.MF
+++ b/diagram/org.eclipse.efm.modeling.diagram.common/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-SymbolicName: org.eclipse.efm.modeling.diagram.common
 Bundle-Version: 0.0.1.qualifier
 Bundle-Vendor: CEA - LIST
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.eclipse.core.runtime,
  org.eclipse.emf.common.util,
  org.eclipse.emf.ecore,
diff --git a/diagram/org.eclipse.efm.modeling.diagram.internalblock/.settings/org.eclipse.jdt.core.prefs b/diagram/org.eclipse.efm.modeling.diagram.internalblock/.settings/org.eclipse.jdt.core.prefs
index 295926d..e2860e9 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.internalblock/.settings/org.eclipse.jdt.core.prefs
+++ b/diagram/org.eclipse.efm.modeling.diagram.internalblock/.settings/org.eclipse.jdt.core.prefs
@@ -4,4 +4,5 @@
 org.eclipse.jdt.core.compiler.compliance=1.8

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.release=disabled

 org.eclipse.jdt.core.compiler.source=1.8

diff --git a/diagram/org.eclipse.efm.modeling.diagram.internalblock/META-INF/MANIFEST.MF b/diagram/org.eclipse.efm.modeling.diagram.internalblock/META-INF/MANIFEST.MF
index 3157ca6..72f8574 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.internalblock/META-INF/MANIFEST.MF
+++ b/diagram/org.eclipse.efm.modeling.diagram.internalblock/META-INF/MANIFEST.MF
@@ -10,5 +10,5 @@
  org.eclipse.efm.formalml.service.types;bundle-version="[0.0.1,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="2.0.0",
  org.eclipse.papyrus.uml.diagram.composite;bundle-version="2.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
diff --git a/diagram/org.eclipse.efm.modeling.diagram.statemachine/.settings/org.eclipse.jdt.core.prefs b/diagram/org.eclipse.efm.modeling.diagram.statemachine/.settings/org.eclipse.jdt.core.prefs
index 295926d..e2860e9 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.statemachine/.settings/org.eclipse.jdt.core.prefs
+++ b/diagram/org.eclipse.efm.modeling.diagram.statemachine/.settings/org.eclipse.jdt.core.prefs
@@ -4,4 +4,5 @@
 org.eclipse.jdt.core.compiler.compliance=1.8

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.release=disabled

 org.eclipse.jdt.core.compiler.source=1.8

diff --git a/diagram/org.eclipse.efm.modeling.diagram.statemachine/META-INF/MANIFEST.MF b/diagram/org.eclipse.efm.modeling.diagram.statemachine/META-INF/MANIFEST.MF
index fb69ab4..e0fac97 100644
--- a/diagram/org.eclipse.efm.modeling.diagram.statemachine/META-INF/MANIFEST.MF
+++ b/diagram/org.eclipse.efm.modeling.diagram.statemachine/META-INF/MANIFEST.MF
@@ -11,9 +11,8 @@
  org.eclipse.papyrus.uml.service.types;bundle-version="2.0.0",
  org.eclipse.papyrus.uml.xtext.integration.ui,
  org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="2.0.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.efm.modeling.diagram.common.factory,
  org.eclipse.efm.modeling.formalml.helpers,
- org.eclipse.papyrus.uml.diagram.clazz.part,
- org.eclipse.papyrus.uml.diagram.statemachine.part
+ org.eclipse.papyrus.uml.diagram.clazz.part
diff --git a/doc/org.eclipse.efm.modeling.doc.architecture/.classpath b/doc/org.eclipse.efm.modeling.doc.architecture/.classpath
index 54f561c..f656d57 100644
--- a/doc/org.eclipse.efm.modeling.doc.architecture/.classpath
+++ b/doc/org.eclipse.efm.modeling.doc.architecture/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="output" path="target/classes"/>

diff --git a/doc/org.eclipse.efm.modeling.doc.architecture/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.efm.modeling.doc.architecture/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/doc/org.eclipse.efm.modeling.doc.architecture/.settings/org.eclipse.jdt.core.prefs
+++ b/doc/org.eclipse.efm.modeling.doc.architecture/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/doc/org.eclipse.efm.modeling.doc.architecture/META-INF/MANIFEST.MF b/doc/org.eclipse.efm.modeling.doc.architecture/META-INF/MANIFEST.MF
index f6b824a..9401d13 100644
--- a/doc/org.eclipse.efm.modeling.doc.architecture/META-INF/MANIFEST.MF
+++ b/doc/org.eclipse.efm.modeling.doc.architecture/META-INF/MANIFEST.MF
@@ -3,6 +3,6 @@
 Bundle-Name: Architecture
 Bundle-SymbolicName: org.eclipse.efm.modeling.doc.architecture
 Bundle-Version: 0.0.1.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
  org.eclipse.ui.workbench
diff --git a/doc/org.eclipse.efm.modeling.doc.helpcontents/.classpath b/doc/org.eclipse.efm.modeling.doc.helpcontents/.classpath
index 54f561c..f656d57 100644
--- a/doc/org.eclipse.efm.modeling.doc.helpcontents/.classpath
+++ b/doc/org.eclipse.efm.modeling.doc.helpcontents/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="output" path="target/classes"/>

diff --git a/doc/org.eclipse.efm.modeling.doc.helpcontents/.settings/org.eclipse.jdt.core.prefs b/doc/org.eclipse.efm.modeling.doc.helpcontents/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/doc/org.eclipse.efm.modeling.doc.helpcontents/.settings/org.eclipse.jdt.core.prefs
+++ b/doc/org.eclipse.efm.modeling.doc.helpcontents/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/doc/org.eclipse.efm.modeling.doc.helpcontents/META-INF/MANIFEST.MF b/doc/org.eclipse.efm.modeling.doc.helpcontents/META-INF/MANIFEST.MF
index 87f1d70..18f1612 100644
--- a/doc/org.eclipse.efm.modeling.doc.helpcontents/META-INF/MANIFEST.MF
+++ b/doc/org.eclipse.efm.modeling.doc.helpcontents/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.efm.modeling.doc.helpcontents;singleton:=true
 Bundle-Version: 0.0.1.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Import-Package: org.eclipse.ui.plugin
 Require-Bundle: org.eclipse.core.runtime
 Bundle-Vendor: %pluginVendor
diff --git a/doc/org.eclipse.efm.modeling.doc.xlia/.classpath b/doc/org.eclipse.efm.modeling.doc.xlia/.classpath
index b862a29..ca3785c 100644
--- a/doc/org.eclipse.efm.modeling.doc.xlia/.classpath
+++ b/doc/org.eclipse.efm.modeling.doc.xlia/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/doc/org.eclipse.efm.modeling.doc.xlia/META-INF/MANIFEST.MF b/doc/org.eclipse.efm.modeling.doc.xlia/META-INF/MANIFEST.MF
index ab0c1d2..ebf50eb 100644
--- a/doc/org.eclipse.efm.modeling.doc.xlia/META-INF/MANIFEST.MF
+++ b/doc/org.eclipse.efm.modeling.doc.xlia/META-INF/MANIFEST.MF
@@ -7,5 +7,5 @@
 Bundle-Vendor: %providerName
 Require-Bundle: org.eclipse.ui,

  org.eclipse.core.runtime
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
diff --git a/editor/sew/org.eclipse.efm.sew.ecore/.classpath b/editor/sew/org.eclipse.efm.sew.ecore/.classpath
index e9b9bf7..7a8d12e 100644
--- a/editor/sew/org.eclipse.efm.sew.ecore/.classpath
+++ b/editor/sew/org.eclipse.efm.sew.ecore/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen"/>

diff --git a/editor/sew/org.eclipse.efm.sew.ecore/.settings/org.eclipse.jdt.core.prefs b/editor/sew/org.eclipse.efm.sew.ecore/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/sew/org.eclipse.efm.sew.ecore/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/sew/org.eclipse.efm.sew.ecore/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/sew/org.eclipse.efm.sew.ecore/META-INF/MANIFEST.MF b/editor/sew/org.eclipse.efm.sew.ecore/META-INF/MANIFEST.MF
index c4281e5..9b91fdf 100644
--- a/editor/sew/org.eclipse.efm.sew.ecore/META-INF/MANIFEST.MF
+++ b/editor/sew/org.eclipse.efm.sew.ecore/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@
  org.eclipse.core.runtime,
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.efm.sew.ecore;visibility:=reexport
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.efm.ecore.sew,
  org.eclipse.efm.ecore.sew.expression,
  org.eclipse.efm.ecore.sew.expression.impl,
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/.classpath b/editor/sew/org.eclipse.efm.sew.xtext.ide/.classpath
index 026e45b..d0c5d81 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/.classpath
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen/"/>

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/.settings/org.eclipse.jdt.core.prefs b/editor/sew/org.eclipse.efm.sew.xtext.ide/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/META-INF/MANIFEST.MF b/editor/sew/org.eclipse.efm.sew.xtext.ide/META-INF/MANIFEST.MF
index 5d1eb49..c5c7027 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/META-INF/MANIFEST.MF
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
  org.eclipse.xtext.ide,

  org.eclipse.xtext.xbase.ide,

  org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.sew.xtext.ide.contentassist.antlr.internal,

  org.eclipse.efm.sew.xtext.ide.contentassist.antlr

 Automatic-Module-Name: org.eclipse.efm.sew.xtext.ide

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/AbstractSEWIdeModule.java b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/AbstractSEWIdeModule.java
index a00d78f..3d7645e 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/AbstractSEWIdeModule.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/AbstractSEWIdeModule.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ide;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/PartialSEWContentAssistParser.java b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/PartialSEWContentAssistParser.java
index 8d850a9..e4c9fb5 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/PartialSEWContentAssistParser.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/PartialSEWContentAssistParser.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ide.contentassist.antlr;
 
@@ -20,10 +20,9 @@
 import org.eclipse.xtext.AbstractRule;
 import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement;
 import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
-import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
 import org.eclipse.xtext.util.PolymorphicDispatcher;
 
-public class PartialSEWContentAssistParser extends SEWParser implements IPartialEditingContentAssistParser {
+public class PartialSEWContentAssistParser extends SEWParser {
 
 	private AbstractRule rule;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/SEWParser.java b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/SEWParser.java
index ad7c58e..55ef8c9 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/SEWParser.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/SEWParser.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ide.contentassist.antlr;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEW.g b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEW.g
index 838e408..d029a72 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEW.g
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEW.g
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 grammar InternalSEW;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEWParser.java b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEWParser.java
index 8884363..7ad9929 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEWParser.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ide/src-gen/org/eclipse/efm/sew/xtext/ide/contentassist/antlr/internal/InternalSEWParser.java
@@ -33,7 +33,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 @SuppressWarnings("all")
 public class InternalSEWParser extends AbstractInternalContentAssistParser {
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.tests/.classpath b/editor/sew/org.eclipse.efm.sew.xtext.tests/.classpath
index c461527..9a77662 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.tests/.classpath
+++ b/editor/sew/org.eclipse.efm.sew.xtext.tests/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 		<attributes>

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.tests/.settings/org.eclipse.jdt.core.prefs b/editor/sew/org.eclipse.efm.sew.xtext.tests/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/sew/org.eclipse.efm.sew.xtext.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.tests/META-INF/MANIFEST.MF b/editor/sew/org.eclipse.efm.sew.xtext.tests/META-INF/MANIFEST.MF
index 7ed1c7f..99654ce 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.tests/META-INF/MANIFEST.MF
+++ b/editor/sew/org.eclipse.efm.sew.xtext.tests/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.eclipse.xtext.xbase.lib;bundle-version="2.14.0",

  org.eclipse.xtext.testing,

  org.eclipse.xtext.xbase.testing

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.sew.xtext.tests;x-internal=true

 Import-Package: org.hamcrest.core,

  org.junit;version="4.5.0",

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.tests/src-gen/org/eclipse/efm/sew/xtext/tests/SEWInjectorProvider.java b/editor/sew/org.eclipse.efm.sew.xtext.tests/src-gen/org/eclipse/efm/sew/xtext/tests/SEWInjectorProvider.java
index d1f72a2..73ed940 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.tests/src-gen/org/eclipse/efm/sew/xtext/tests/SEWInjectorProvider.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.tests/src-gen/org/eclipse/efm/sew/xtext/tests/SEWInjectorProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.tests;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/.classpath b/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/.classpath
index c461527..c7f7faa 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/.classpath
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/.classpath
@@ -1,18 +1,17 @@
 <?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.8"/>

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

+		<attributes>

+			<attribute name="module" value="true"/>

+		</attributes>

+	</classpathentry>

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

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

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

 		<attributes>

 			<attribute name="test" value="true"/>

 		</attributes>

 	</classpathentry>

-	<classpathentry kind="src" path="src-gen/">

-		<attributes>

-			<attribute name="test" value="true"/>

-		</attributes>

-	</classpathentry>

-	<classpathentry kind="src" path="xtend-gen/">

+	<classpathentry kind="src" path="src-gen">

 		<attributes>

 			<attribute name="test" value="true"/>

 		</attributes>

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/META-INF/MANIFEST.MF b/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/META-INF/MANIFEST.MF
index 6a33fb3..a6e134a 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/META-INF/MANIFEST.MF
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
  org.eclipse.xtext.testing,

  org.eclipse.xtext.xbase.testing,

  org.eclipse.xtext.ui.testing

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.sew.xtext.ui.tests;x-internal=true

 Import-Package: org.hamcrest.core,

  org.junit;version="4.5.0",

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/src-gen/org/eclipse/efm/sew/xtext/ui/tests/SEWUiInjectorProvider.java b/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/src-gen/org/eclipse/efm/sew/xtext/ui/tests/SEWUiInjectorProvider.java
index ee2f322..6fccd25 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/src-gen/org/eclipse/efm/sew/xtext/ui/tests/SEWUiInjectorProvider.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui.tests/src-gen/org/eclipse/efm/sew/xtext/ui/tests/SEWUiInjectorProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ui.tests;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/.classpath b/editor/sew/org.eclipse.efm.sew.xtext.ui/.classpath
index 026e45b..d0c5d81 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/.classpath
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen/"/>

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/.settings/org.eclipse.jdt.core.prefs b/editor/sew/org.eclipse.efm.sew.xtext.ui/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/META-INF/MANIFEST.MF b/editor/sew/org.eclipse.efm.sew.xtext.ui/META-INF/MANIFEST.MF
index 567e5ab..f3008e3 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/META-INF/MANIFEST.MF
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/META-INF/MANIFEST.MF
@@ -19,7 +19,7 @@
  org.eclipse.xtend.lib;bundle-version="2.14.0";resolution:=optional,

  org.eclipse.xtext.xbase.lib;bundle-version="2.14.0"

 Import-Package: org.apache.log4j

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.sew.xtext.ui.internal,

  org.eclipse.efm.sew.xtext.ui.quickfix,

  org.eclipse.efm.sew.xtext.ui.contentassist

diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/plugin.xml_gen b/editor/sew/org.eclipse.efm.sew.xtext.ui/plugin.xml_gen
index a81863b..0c13f6e 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/plugin.xml_gen
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/plugin.xml_gen
@@ -313,7 +313,7 @@
 	<!-- Quick Outline -->
 	<extension
 		point="org.eclipse.ui.handlers">
-		<handler 
+		<handler
 			class="org.eclipse.efm.sew.xtext.ui.SEWExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
 			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
 			<activeWhen>
@@ -373,7 +373,7 @@
 	</extension>
 	<!-- Rename Refactoring -->
 	<extension point="org.eclipse.ui.handlers">
-		<handler 
+		<handler
 			class="org.eclipse.efm.sew.xtext.ui.SEWExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
 			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
 			<activeWhen>
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/AbstractSEWUiModule.java b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/AbstractSEWUiModule.java
index 86d75aa..1c02325 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/AbstractSEWUiModule.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/AbstractSEWUiModule.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ui;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/SEWExecutableExtensionFactory.java b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/SEWExecutableExtensionFactory.java
index 3016972..a9a561b 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/SEWExecutableExtensionFactory.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/SEWExecutableExtensionFactory.java
@@ -11,15 +11,15 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ui;
 
 import com.google.inject.Injector;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.efm.sew.xtext.ui.internal.XtextActivator;
 import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
 
 /**
  * This class was generated. Customizations should only happen in a newly
@@ -29,7 +29,7 @@
 
 	@Override
 	protected Bundle getBundle() {
-		return Platform.getBundle(XtextActivator.PLUGIN_ID);
+		return FrameworkUtil.getBundle(XtextActivator.class);
 	}
 	
 	@Override
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/contentassist/AbstractSEWProposalProvider.java b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/contentassist/AbstractSEWProposalProvider.java
index 829b3f5..d270d9a 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/contentassist/AbstractSEWProposalProvider.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/contentassist/AbstractSEWProposalProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ui.contentassist;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/internal/XtextActivator.java b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/internal/XtextActivator.java
index c02c4dd..d69e9ac 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/internal/XtextActivator.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext.ui/src-gen/org/eclipse/efm/sew/xtext/ui/internal/XtextActivator.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.ui.internal;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/.classpath b/editor/sew/org.eclipse.efm.sew.xtext/.classpath
index 026e45b..d0c5d81 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/.classpath
+++ b/editor/sew/org.eclipse.efm.sew.xtext/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen/"/>

diff --git a/editor/sew/org.eclipse.efm.sew.xtext/.settings/org.eclipse.jdt.core.prefs b/editor/sew/org.eclipse.efm.sew.xtext/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/sew/org.eclipse.efm.sew.xtext/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/sew/org.eclipse.efm.sew.xtext/META-INF/MANIFEST.MF b/editor/sew/org.eclipse.efm.sew.xtext/META-INF/MANIFEST.MF
index 777a978..bcbe87d 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/META-INF/MANIFEST.MF
+++ b/editor/sew/org.eclipse.efm.sew.xtext/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.antlr.runtime;bundle-version="[3.2.0,3.2.1)",

  org.eclipse.xtext.util,

  org.eclipse.xtend.lib;bundle-version="2.14.0"

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.sew.xtext.services,

  org.eclipse.efm.sew.xtext.parser.antlr.internal,

  org.eclipse.efm.sew.xtext,

diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/AbstractSEWRuntimeModule.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/AbstractSEWRuntimeModule.java
index b3dda5d..751e59d 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/AbstractSEWRuntimeModule.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/AbstractSEWRuntimeModule.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/SEWStandaloneSetupGenerated.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/SEWStandaloneSetupGenerated.java
index 586f716..df7bebf 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/SEWStandaloneSetupGenerated.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/SEWStandaloneSetupGenerated.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWAntlrTokenFileProvider.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWAntlrTokenFileProvider.java
index c6e392d..e48ae85 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWAntlrTokenFileProvider.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWAntlrTokenFileProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.parser.antlr;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWParser.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWParser.java
index d6e25a4..7bf0629 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWParser.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/SEWParser.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.parser.antlr;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEW.g b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEW.g
index 592d56e..dce5362 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEW.g
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEW.g
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 grammar InternalSEW;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEWParser.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEWParser.java
index 0dec6bd..18c33d9 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEWParser.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/parser/antlr/internal/InternalSEWParser.java
@@ -32,7 +32,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 @SuppressWarnings("all")
 public class InternalSEWParser extends AbstractInternalAntlrParser {
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/scoping/AbstractSEWScopeProvider.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/scoping/AbstractSEWScopeProvider.java
index 379f420..9d19260 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/scoping/AbstractSEWScopeProvider.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/scoping/AbstractSEWScopeProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.scoping;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSemanticSequencer.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSemanticSequencer.java
index 0e8822d..06d34a3 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSemanticSequencer.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSemanticSequencer.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.serializer;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSyntacticSequencer.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSyntacticSequencer.java
index 631643b..9f257e6 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSyntacticSequencer.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/serializer/SEWSyntacticSequencer.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.serializer;
 
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/services/SEWGrammarAccess.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/services/SEWGrammarAccess.java
index a71142d..b4c3078 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/services/SEWGrammarAccess.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/services/SEWGrammarAccess.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.services;
 
@@ -30,11 +30,11 @@
 import org.eclipse.xtext.RuleCall;
 import org.eclipse.xtext.TerminalRule;
 import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
-import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
+import org.eclipse.xtext.service.AbstractElementFinder;
 import org.eclipse.xtext.service.GrammarProvider;
 
 @Singleton
-public class SEWGrammarAccess extends AbstractGrammarElementFinder {
+public class SEWGrammarAccess extends AbstractElementFinder.AbstractGrammarElementFinder {
 	
 	public class WorkflowElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.sew.xtext.SEW.Workflow");
@@ -67,41 +67,65 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Symbolic Execution Workflow Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//Workflow sew::SEWorkflow:
-		//	{sew::SEWorkflow} Prolog? (type=('workflow' | 'symbex-workflow') name=UFI? description=EString?
-		//	'{'
-		//	element+=(Object | Property)*
-		//	'}'
-		//	// for Xtext Embeded Editor
-		//	| element+=(Object | Property)*
-		//	// Deprecated Object as FAVM Workflow
-		//	| element+=DeprecatedObject);
+		//Workflow returns sew::SEWorkflow
+		//: {sew::SEWorkflow}
+		//    ( Prolog )?
+		//    ( type=( 'workflow' | 'symbex-workflow' )
+		//        ( name=UFI )?  ( description=EString )?
+		//        '{'
+		//            ( element+=( Object | Property ) )*
+		//        '}'
+		//    // for Xtext Embeded Editor
+		//    | ( element+=( Object | Property ) )*
+		//    // Deprecated Object as FAVM Workflow
+		//    | element+=DeprecatedObject
+		//    )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{sew::SEWorkflow} Prolog? (type=('workflow' | 'symbex-workflow') name=UFI? description=EString? '{' element+=(Object |
-		//Property)* '}' // for Xtext Embeded Editor
-		//| element+=(Object | Property)* // Deprecated Object as FAVM Workflow
-		//| element+=DeprecatedObject)
+		//{sew::SEWorkflow}
+		//   ( Prolog )?
+		//   ( type=( 'workflow' | 'symbex-workflow' )
+		//       ( name=UFI )?  ( description=EString )?
+		//       '{'
+		//           ( element+=( Object | Property ) )*
+		//       '}'
+		//   // for Xtext Embeded Editor
+		//   | ( element+=( Object | Property ) )*
+		//   // Deprecated Object as FAVM Workflow
+		//   | element+=DeprecatedObject
+		//   )
 		public Group getGroup() { return cGroup; }
 		
 		//{sew::SEWorkflow}
 		public Action getSEWorkflowAction_0() { return cSEWorkflowAction_0; }
 		
-		//Prolog?
+		//( Prolog )?
 		public RuleCall getPrologParserRuleCall_1() { return cPrologParserRuleCall_1; }
 		
-		//(type=('workflow' | 'symbex-workflow') name=UFI? description=EString? '{' element+=(Object | Property)* '}' // for Xtext Embeded Editor
-		//| element+=(Object | Property)* // Deprecated Object as FAVM Workflow
-		//| element+=DeprecatedObject)
+		//( type=( 'workflow' | 'symbex-workflow' )
+		//    ( name=UFI )?  ( description=EString )?
+		//    '{'
+		//        ( element+=( Object | Property ) )*
+		//    '}'
+		//// for Xtext Embeded Editor
+		//| ( element+=( Object | Property ) )*
+		//// Deprecated Object as FAVM Workflow
+		//| element+=DeprecatedObject
+		//)
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//type=('workflow' | 'symbex-workflow') name=UFI? description=EString? '{' element+=(Object | Property)* '}'
+		//type=( 'workflow' | 'symbex-workflow' )
+		//       ( name=UFI )?  ( description=EString )?
+		//       '{'
+		//           ( element+=( Object | Property ) )*
+		//       '}'
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
-		//type=('workflow' | 'symbex-workflow')
+		//type=( 'workflow' | 'symbex-workflow' )
 		public Assignment getTypeAssignment_2_0_0() { return cTypeAssignment_2_0_0; }
 		
-		//('workflow' | 'symbex-workflow')
+		//( 'workflow' | 'symbex-workflow' )
 		public Alternatives getTypeAlternatives_2_0_0_0() { return cTypeAlternatives_2_0_0_0; }
 		
 		//'workflow'
@@ -110,13 +134,13 @@
 		//'symbex-workflow'
 		public Keyword getTypeSymbexWorkflowKeyword_2_0_0_0_1() { return cTypeSymbexWorkflowKeyword_2_0_0_0_1; }
 		
-		//name=UFI?
+		//( name=UFI )?
 		public Assignment getNameAssignment_2_0_1() { return cNameAssignment_2_0_1; }
 		
 		//UFI
 		public RuleCall getNameUFIParserRuleCall_2_0_1_0() { return cNameUFIParserRuleCall_2_0_1_0; }
 		
-		//description=EString?
+		//( description=EString )?
 		public Assignment getDescriptionAssignment_2_0_2() { return cDescriptionAssignment_2_0_2; }
 		
 		//EString
@@ -125,10 +149,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2_0_3() { return cLeftCurlyBracketKeyword_2_0_3; }
 		
-		//element+=(Object | Property)*
+		//( element+=( Object | Property ) )*
 		public Assignment getElementAssignment_2_0_4() { return cElementAssignment_2_0_4; }
 		
-		//(Object | Property)
+		//( Object | Property )
 		public Alternatives getElementAlternatives_2_0_4_0() { return cElementAlternatives_2_0_4_0; }
 		
 		//Object
@@ -140,10 +164,10 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_2_0_5() { return cRightCurlyBracketKeyword_2_0_5; }
 		
-		//element+=(Object | Property)*
+		//( element+=( Object | Property ) )*
 		public Assignment getElementAssignment_2_1() { return cElementAssignment_2_1; }
 		
-		//(Object | Property)
+		//( Object | Property )
 		public Alternatives getElementAlternatives_2_1_0() { return cElementAlternatives_2_1_0; }
 		
 		//Object
@@ -177,14 +201,19 @@
 		private final RuleCall cEStringParserRuleCall_3_2 = (RuleCall)cAlternatives_3.eContents().get(2);
 		private final Keyword cGreaterThanSignColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//Prolog:
-		//	('@sew' | '@favm') '<' ('workflow' | 'sew') (',' 'version:'? EDouble | UFI | EString)? '>:';
+		//Prolog
+		//: ( '@sew' | '@favm' ) '<'
+		//    ( 'workflow' | 'sew' )
+		//    ( ',' ( 'version:' )?  EDouble | UFI | EString )? '>:'
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//('@sew' | '@favm') '<' ('workflow' | 'sew') (',' 'version:'? EDouble | UFI | EString)? '>:'
+		//( '@sew' | '@favm' ) '<'
+		//   ( 'workflow' | 'sew' )
+		//   ( ',' ( 'version:' )?  EDouble | UFI | EString )? '>:'
 		public Group getGroup() { return cGroup; }
 		
-		//('@sew' | '@favm')
+		//( '@sew' | '@favm' )
 		public Alternatives getAlternatives_0() { return cAlternatives_0; }
 		
 		//'@sew'
@@ -196,7 +225,7 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_1() { return cLessThanSignKeyword_1; }
 		
-		//('workflow' | 'sew')
+		//( 'workflow' | 'sew' )
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
 		//'workflow'
@@ -205,16 +234,16 @@
 		//'sew'
 		public Keyword getSewKeyword_2_1() { return cSewKeyword_2_1; }
 		
-		//(',' 'version:'? EDouble | UFI | EString)?
+		//( ',' ( 'version:' )?  EDouble | UFI | EString )?
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//',' 'version:'? EDouble
+		//',' ( 'version:' )?  EDouble
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//','
 		public Keyword getCommaKeyword_3_0_0() { return cCommaKeyword_3_0_0; }
 		
-		//'version:'?
+		//( 'version:' )?
 		public Keyword getVersionKeyword_3_0_1() { return cVersionKeyword_3_0_1; }
 		
 		//EDouble
@@ -239,13 +268,15 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// [ Qualified ] Identifier
 		//////////////////////////////////////////////////////////////////////////////////
-		//ReservedWord:
-		//	'workflow' | 'sew'
-		//	// Deprecated
-		//	| DeprecatedReservedWord;
+		// ReservedWord
+		//: 'workflow' | 'sew'
+		//// Deprecated
+		//| DeprecatedReservedWord
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'workflow' | 'sew' // Deprecated
+		// 'workflow' | 'sew'
+		//// Deprecated
 		//| DeprecatedReservedWord
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
@@ -264,8 +295,9 @@
 		private final RuleCall cReservedWordParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cXIDENDIFIERTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//XID:
-		//	ReservedWord | XIDENDIFIER;
+		//XID returns ecore::EString
+		//: ReservedWord | XIDENDIFIER
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//ReservedWord | XIDENDIFIER
@@ -287,20 +319,21 @@
 		private final Keyword cFullStopKeyword_1_0_1 = (Keyword)cAlternatives_1_0.eContents().get(1);
 		private final RuleCall cXIDParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
 		
-		//UFI:
-		//	XID (('::' | '.') XID)*;
+		//UFI returns ecore::EString
+		//: XID ( ( '::' | '.' ) XID )*
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//XID (('::' | '.') XID)*
+		//XID ( ( '::' | '.' ) XID )*
 		public Group getGroup() { return cGroup; }
 		
 		//XID
 		public RuleCall getXIDParserRuleCall_0() { return cXIDParserRuleCall_0; }
 		
-		//(('::' | '.') XID)*
+		//( ( '::' | '.' ) XID )*
 		public Group getGroup_1() { return cGroup_1; }
 		
-		//('::' | '.')
+		//( '::' | '.' )
 		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
 		
 		//'::'
@@ -351,22 +384,37 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Object Configuration Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//Object sew::WObject:
-		//	{sew::WObject} type=UFI name=UFI? description=EString?
-		//	'{'
-		//	element+=(Object | Property)*
-		//	'}'
-		//	| {sew::WObject} name=UFI (':=' | '+:=') (type=UFI description=EString?)?
-		//	'{'
-		//	element+=(Object | Property)*
-		//	'}';
+		//Object returns sew::WObject
+		//: {sew::WObject}
+		//    type=UFI  ( name=UFI )?  ( description=EString )?
+		//    '{'
+		//        ( element+=( Object | Property ) )*
+		//    '}'
+		//| {sew::WObject}
+		//    name=UFI  ( ':=' | '+:=' )  ( type=UFI  ( description=EString )? )?
+		//    '{'
+		//        ( element+=( Object | Property ) )*
+		//    '}'
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{sew::WObject} type=UFI name=UFI? description=EString? '{' element+=(Object | Property)* '}' | {sew::WObject} name=UFI
-		//(':=' | '+:=') (type=UFI description=EString?)? '{' element+=(Object | Property)* '}'
+		// {sew::WObject}
+		//    type=UFI  ( name=UFI )?  ( description=EString )?
+		//    '{'
+		//        ( element+=( Object | Property ) )*
+		//    '}'
+		//| {sew::WObject}
+		//    name=UFI  ( ':=' | '+:=' )  ( type=UFI  ( description=EString )? )?
+		//    '{'
+		//        ( element+=( Object | Property ) )*
+		//    '}'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{sew::WObject} type=UFI name=UFI? description=EString? '{' element+=(Object | Property)* '}'
+		//{sew::WObject}
+		//   type=UFI  ( name=UFI )?  ( description=EString )?
+		//   '{'
+		//       ( element+=( Object | Property ) )*
+		//   '}'
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//{sew::WObject}
@@ -378,13 +426,13 @@
 		//UFI
 		public RuleCall getTypeUFIParserRuleCall_0_1_0() { return cTypeUFIParserRuleCall_0_1_0; }
 		
-		//name=UFI?
+		//( name=UFI )?
 		public Assignment getNameAssignment_0_2() { return cNameAssignment_0_2; }
 		
 		//UFI
 		public RuleCall getNameUFIParserRuleCall_0_2_0() { return cNameUFIParserRuleCall_0_2_0; }
 		
-		//description=EString?
+		//( description=EString )?
 		public Assignment getDescriptionAssignment_0_3() { return cDescriptionAssignment_0_3; }
 		
 		//EString
@@ -393,10 +441,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_0_4() { return cLeftCurlyBracketKeyword_0_4; }
 		
-		//element+=(Object | Property)*
+		//( element+=( Object | Property ) )*
 		public Assignment getElementAssignment_0_5() { return cElementAssignment_0_5; }
 		
-		//(Object | Property)
+		//( Object | Property )
 		public Alternatives getElementAlternatives_0_5_0() { return cElementAlternatives_0_5_0; }
 		
 		//Object
@@ -408,7 +456,11 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_0_6() { return cRightCurlyBracketKeyword_0_6; }
 		
-		//{sew::WObject} name=UFI (':=' | '+:=') (type=UFI description=EString?)? '{' element+=(Object | Property)* '}'
+		//{sew::WObject}
+		//   name=UFI  ( ':=' | '+:=' )  ( type=UFI  ( description=EString )? )?
+		//   '{'
+		//       ( element+=( Object | Property ) )*
+		//   '}'
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{sew::WObject}
@@ -420,7 +472,7 @@
 		//UFI
 		public RuleCall getNameUFIParserRuleCall_1_1_0() { return cNameUFIParserRuleCall_1_1_0; }
 		
-		//(':=' | '+:=')
+		//( ':=' | '+:=' )
 		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }
 		
 		//':='
@@ -429,7 +481,7 @@
 		//'+:='
 		public Keyword getPlusSignColonEqualsSignKeyword_1_2_1() { return cPlusSignColonEqualsSignKeyword_1_2_1; }
 		
-		//(type=UFI description=EString?)?
+		//( type=UFI  ( description=EString )? )?
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//type=UFI
@@ -438,7 +490,7 @@
 		//UFI
 		public RuleCall getTypeUFIParserRuleCall_1_3_0_0() { return cTypeUFIParserRuleCall_1_3_0_0; }
 		
-		//description=EString?
+		//( description=EString )?
 		public Assignment getDescriptionAssignment_1_3_1() { return cDescriptionAssignment_1_3_1; }
 		
 		//EString
@@ -447,10 +499,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_4() { return cLeftCurlyBracketKeyword_1_4; }
 		
-		//element+=(Object | Property)*
+		//( element+=( Object | Property ) )*
 		public Assignment getElementAssignment_1_5() { return cElementAssignment_1_5; }
 		
-		//(Object | Property)
+		//( Object | Property )
 		public Alternatives getElementAlternatives_1_5_0() { return cElementAlternatives_1_5_0; }
 		
 		//Object
@@ -471,12 +523,14 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Property Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//Property sew::WProperty:
-		//	Section
-		//	| Attribute;
+		//Property returns sew::WProperty
+		//: Section
+		//| Attribute
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//Section | Attribute
+		// Section
+		//| Attribute
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//Section
@@ -507,12 +561,18 @@
 		private final RuleCall cElementObjectParserRuleCall_2_1_1_0_0 = (RuleCall)cElementAlternatives_2_1_1_0.eContents().get(0);
 		private final RuleCall cElementAttributeParserRuleCall_2_1_1_0_1 = (RuleCall)cElementAlternatives_2_1_1_0.eContents().get(1);
 		
-		//Section sew::WSection:
-		//	name=XID description=EString? ('[' element+=(Object | Attribute)* ']'
-		//	| ':' element+=(Object | Attribute)*);
+		//Section returns sew::WSection
+		//: name=XID  ( description=EString )?
+		//    ( '[' ( element+=( Object | Attribute ) )* ']'
+		//    | ':' ( element+=( Object | Attribute ) )*
+		//    )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=XID description=EString? ('[' element+=(Object | Attribute)* ']' | ':' element+=(Object | Attribute)*)
+		//name=XID  ( description=EString )?
+		//   ( '[' ( element+=( Object | Attribute ) )* ']'
+		//   | ':' ( element+=( Object | Attribute ) )*
+		//   )
 		public Group getGroup() { return cGroup; }
 		
 		//name=XID
@@ -521,25 +581,27 @@
 		//XID
 		public RuleCall getNameXIDParserRuleCall_0_0() { return cNameXIDParserRuleCall_0_0; }
 		
-		//description=EString?
+		//( description=EString )?
 		public Assignment getDescriptionAssignment_1() { return cDescriptionAssignment_1; }
 		
 		//EString
 		public RuleCall getDescriptionEStringParserRuleCall_1_0() { return cDescriptionEStringParserRuleCall_1_0; }
 		
-		//('[' element+=(Object | Attribute)* ']' | ':' element+=(Object | Attribute)*)
+		//( '[' ( element+=( Object | Attribute ) )* ']'
+		//| ':' ( element+=( Object | Attribute ) )*
+		//)
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//'[' element+=(Object | Attribute)* ']'
+		//'[' ( element+=( Object | Attribute ) )* ']'
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//'['
 		public Keyword getLeftSquareBracketKeyword_2_0_0() { return cLeftSquareBracketKeyword_2_0_0; }
 		
-		//element+=(Object | Attribute)*
+		//( element+=( Object | Attribute ) )*
 		public Assignment getElementAssignment_2_0_1() { return cElementAssignment_2_0_1; }
 		
-		//(Object | Attribute)
+		//( Object | Attribute )
 		public Alternatives getElementAlternatives_2_0_1_0() { return cElementAlternatives_2_0_1_0; }
 		
 		//Object
@@ -551,16 +613,16 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_2_0_2() { return cRightSquareBracketKeyword_2_0_2; }
 		
-		//':' element+=(Object | Attribute)*
+		//':' ( element+=( Object | Attribute ) )*
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//':'
 		public Keyword getColonKeyword_2_1_0() { return cColonKeyword_2_1_0; }
 		
-		//element+=(Object | Attribute)*
+		//( element+=( Object | Attribute ) )*
 		public Assignment getElementAssignment_2_1_1() { return cElementAssignment_2_1_1; }
 		
-		//(Object | Attribute)
+		//( Object | Attribute )
 		public Alternatives getElementAlternatives_2_1_1_0() { return cElementAlternatives_2_1_1_0; }
 		
 		//Object
@@ -580,11 +642,14 @@
 		private final RuleCall cValueValueSpecificationParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
 		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//Attribute sew::WAttribute:
-		//	{sew::WAttribute} name=XID '=' value=ValueSpecification ';'?;
+		//Attribute returns sew::WAttribute
+		//: {sew::WAttribute}
+		//    name=XID  '='  value=ValueSpecification  ( ';' )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{sew::WAttribute} name=XID '=' value=ValueSpecification ';'?
+		//{sew::WAttribute}
+		//   name=XID  '='  value=ValueSpecification  ( ';' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{sew::WAttribute}
@@ -605,7 +670,7 @@
 		//ValueSpecification
 		public RuleCall getValueValueSpecificationParserRuleCall_3_0() { return cValueValueSpecificationParserRuleCall_3_0; }
 		
-		//';'?
+		//( ';' )?
 		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
 	}
 	public class ValueSpecificationElements extends AbstractParserRuleElementFinder {
@@ -615,8 +680,9 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Value Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//ValueSpecification sew::WValueSpecification:
-		//	Expression;
+		//ValueSpecification returns sew::WValueSpecification
+		//: Expression
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//Expression
@@ -631,13 +697,15 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Expression Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//Expression sew::WValueSpecification:
-		//	conditionalExpression
-		//	// Deprecated
-		//	| DeprecatedExpression;
+		//Expression returns sew::WValueSpecification
+		//: conditionalExpression
+		//// Deprecated
+		//| DeprecatedExpression
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//conditionalExpression // Deprecated
+		// conditionalExpression
+		//// Deprecated
 		//| DeprecatedExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
@@ -661,19 +729,26 @@
 		private final Assignment cOperandAssignment_1_4 = (Assignment)cGroup_1.eContents().get(4);
 		private final RuleCall cOperandExpressionParserRuleCall_1_4_0 = (RuleCall)cOperandAssignment_1_4.eContents().get(0);
 		
-		//conditionalExpression sew::WValueSpecification:
-		//	conditionalOrExpression ({expression::Expression.operand+=current} operator='?' operand+=Expression ':'
-		//	operand+=Expression)?;
+		//conditionalExpression returns sew::WValueSpecification
+		//: conditionalOrExpression
+		//    ( {expression::Expression.operand+=current}
+		//        operator='?' operand+=Expression ':' operand+=Expression
+		//    )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//conditionalOrExpression ({expression::Expression.operand+=current} operator='?' operand+=Expression ':'
-		//operand+=Expression)?
+		//conditionalOrExpression
+		//   ( {expression::Expression.operand+=current}
+		//       operator='?' operand+=Expression ':' operand+=Expression
+		//   )?
 		public Group getGroup() { return cGroup; }
 		
 		//conditionalOrExpression
 		public RuleCall getConditionalOrExpressionParserRuleCall_0() { return cConditionalOrExpressionParserRuleCall_0; }
 		
-		//({expression::Expression.operand+=current} operator='?' operand+=Expression ':' operand+=Expression)?
+		//( {expression::Expression.operand+=current}
+		//    operator='?' operand+=Expression ':' operand+=Expression
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{expression::Expression.operand+=current}
@@ -719,29 +794,38 @@
 		private final Assignment cOperandAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
 		private final RuleCall cOperandConditionalAndExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
-		//conditionalOrExpression sew::WValueSpecification:
-		//	conditionalAndExpression ({expression::Expression.operand+=current} operator=('||' | 'or')
-		//	operand+=conditionalAndExpression (('||' | 'or') operand+=conditionalAndExpression)*)?;
+		//conditionalOrExpression returns sew::WValueSpecification
+		//: conditionalAndExpression
+		//    ( {expression::Expression.operand+=current}
+		//        operator=( '||' | 'or' ) operand+=conditionalAndExpression
+		//        ( ( '||' | 'or' ) operand+=conditionalAndExpression )*
+		//    )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//conditionalAndExpression ({expression::Expression.operand+=current} operator=('||' | 'or')
-		//operand+=conditionalAndExpression (('||' | 'or') operand+=conditionalAndExpression)*)?
+		//conditionalAndExpression
+		//   ( {expression::Expression.operand+=current}
+		//       operator=( '||' | 'or' ) operand+=conditionalAndExpression
+		//       ( ( '||' | 'or' ) operand+=conditionalAndExpression )*
+		//   )?
 		public Group getGroup() { return cGroup; }
 		
 		//conditionalAndExpression
 		public RuleCall getConditionalAndExpressionParserRuleCall_0() { return cConditionalAndExpressionParserRuleCall_0; }
 		
-		//({expression::Expression.operand+=current} operator=('||' | 'or') operand+=conditionalAndExpression (('||' | 'or')
-		//operand+=conditionalAndExpression)*)?
+		//( {expression::Expression.operand+=current}
+		//    operator=( '||' | 'or' ) operand+=conditionalAndExpression
+		//    ( ( '||' | 'or' ) operand+=conditionalAndExpression )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{expression::Expression.operand+=current}
 		public Action getExpressionOperandAction_1_0() { return cExpressionOperandAction_1_0; }
 		
-		//operator=('||' | 'or')
+		//operator=( '||' | 'or' )
 		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }
 		
-		//('||' | 'or')
+		//( '||' | 'or' )
 		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }
 		
 		//'||'
@@ -756,10 +840,10 @@
 		//conditionalAndExpression
 		public RuleCall getOperandConditionalAndExpressionParserRuleCall_1_2_0() { return cOperandConditionalAndExpressionParserRuleCall_1_2_0; }
 		
-		//(('||' | 'or') operand+=conditionalAndExpression)*
+		//( ( '||' | 'or' ) operand+=conditionalAndExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
-		//('||' | 'or')
+		//( '||' | 'or' )
 		public Alternatives getAlternatives_1_3_0() { return cAlternatives_1_3_0; }
 		
 		//'||'
@@ -793,29 +877,38 @@
 		private final Assignment cOperandAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
 		private final RuleCall cOperandEqualityExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
-		//conditionalAndExpression sew::WValueSpecification:
-		//	equalityExpression ({expression::Expression.operand+=current} operator=('&&' | 'and') operand+=equalityExpression
-		//	(('&&' | 'and') operand+=equalityExpression)*)?;
+		//conditionalAndExpression returns sew::WValueSpecification
+		//: equalityExpression
+		//    ( {expression::Expression.operand+=current}
+		//        operator=( '&&' | 'and' ) operand+=equalityExpression
+		//        ( ( '&&' | 'and' ) operand+=equalityExpression )*
+		//    )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//equalityExpression ({expression::Expression.operand+=current} operator=('&&' | 'and') operand+=equalityExpression (('&&'
-		//| 'and') operand+=equalityExpression)*)?
+		//equalityExpression
+		//   ( {expression::Expression.operand+=current}
+		//       operator=( '&&' | 'and' ) operand+=equalityExpression
+		//       ( ( '&&' | 'and' ) operand+=equalityExpression )*
+		//   )?
 		public Group getGroup() { return cGroup; }
 		
 		//equalityExpression
 		public RuleCall getEqualityExpressionParserRuleCall_0() { return cEqualityExpressionParserRuleCall_0; }
 		
-		//({expression::Expression.operand+=current} operator=('&&' | 'and') operand+=equalityExpression (('&&' | 'and')
-		//operand+=equalityExpression)*)?
+		//( {expression::Expression.operand+=current}
+		//    operator=( '&&' | 'and' ) operand+=equalityExpression
+		//    ( ( '&&' | 'and' ) operand+=equalityExpression )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{expression::Expression.operand+=current}
 		public Action getExpressionOperandAction_1_0() { return cExpressionOperandAction_1_0; }
 		
-		//operator=('&&' | 'and')
+		//operator=( '&&' | 'and' )
 		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }
 		
-		//('&&' | 'and')
+		//( '&&' | 'and' )
 		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }
 		
 		//'&&'
@@ -830,10 +923,10 @@
 		//equalityExpression
 		public RuleCall getOperandEqualityExpressionParserRuleCall_1_2_0() { return cOperandEqualityExpressionParserRuleCall_1_2_0; }
 		
-		//(('&&' | 'and') operand+=equalityExpression)*
+		//( ( '&&' | 'and' ) operand+=equalityExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
-		//('&&' | 'and')
+		//( '&&' | 'and' )
 		public Alternatives getAlternatives_1_3_0() { return cAlternatives_1_3_0; }
 		
 		//'&&'
@@ -864,29 +957,38 @@
 		private final Assignment cOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
 		private final RuleCall cOperandRelationalExpressionParserRuleCall_1_2_0 = (RuleCall)cOperandAssignment_1_2.eContents().get(0);
 		
-		//equalityExpression sew::WValueSpecification:
-		//	relationalExpression ({expression::Expression.operand+=current} operator=('==' | '!=' | '===' | '=!=' | '=/=')
-		//	operand+=relationalExpression)?;
+		//equalityExpression returns sew::WValueSpecification
+		//: relationalExpression
+		//    ( {expression::Expression.operand+=current}
+		//        operator=( '==' | '!=' | '===' | '=!=' | '=/=' )
+		//        operand+=relationalExpression
+		//    )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//relationalExpression ({expression::Expression.operand+=current} operator=('==' | '!=' | '===' | '=!=' | '=/=')
-		//operand+=relationalExpression)?
+		//relationalExpression
+		//   ( {expression::Expression.operand+=current}
+		//       operator=( '==' | '!=' | '===' | '=!=' | '=/=' )
+		//       operand+=relationalExpression
+		//   )?
 		public Group getGroup() { return cGroup; }
 		
 		//relationalExpression
 		public RuleCall getRelationalExpressionParserRuleCall_0() { return cRelationalExpressionParserRuleCall_0; }
 		
-		//({expression::Expression.operand+=current} operator=('==' | '!=' | '===' | '=!=' | '=/=')
-		//operand+=relationalExpression)?
+		//( {expression::Expression.operand+=current}
+		//    operator=( '==' | '!=' | '===' | '=!=' | '=/=' )
+		//    operand+=relationalExpression
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{expression::Expression.operand+=current}
 		public Action getExpressionOperandAction_1_0() { return cExpressionOperandAction_1_0; }
 		
-		//operator=('==' | '!=' | '===' | '=!=' | '=/=')
+		//operator=( '==' | '!=' | '===' | '=!=' | '=/=' )
 		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }
 		
-		//('==' | '!=' | '===' | '=!=' | '=/=')
+		//( '==' | '!=' | '===' | '=!=' | '=/=' )
 		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }
 		
 		//'=='
@@ -925,28 +1027,38 @@
 		private final Assignment cOperandAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
 		private final RuleCall cOperandAdditiveExpressionParserRuleCall_1_2_0 = (RuleCall)cOperandAssignment_1_2.eContents().get(0);
 		
-		//relationalExpression sew::WValueSpecification:
-		//	additiveExpression ({expression::Expression.operand+=current} operator=('<' | '<=' | '>' | '>=')
-		//	operand+=additiveExpression)?;
+		//relationalExpression returns sew::WValueSpecification
+		//: additiveExpression
+		//    ( {expression::Expression.operand+=current}
+		//        operator=( '<' | '<=' | '>' | '>=' )
+		//        operand+=additiveExpression
+		//    )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//additiveExpression ({expression::Expression.operand+=current} operator=('<' | '<=' | '>' | '>=')
-		//operand+=additiveExpression)?
+		//additiveExpression
+		//   ( {expression::Expression.operand+=current}
+		//       operator=( '<' | '<=' | '>' | '>=' )
+		//       operand+=additiveExpression
+		//   )?
 		public Group getGroup() { return cGroup; }
 		
 		//additiveExpression
 		public RuleCall getAdditiveExpressionParserRuleCall_0() { return cAdditiveExpressionParserRuleCall_0; }
 		
-		//({expression::Expression.operand+=current} operator=('<' | '<=' | '>' | '>=') operand+=additiveExpression)?
+		//( {expression::Expression.operand+=current}
+		//    operator=( '<' | '<=' | '>' | '>=' )
+		//    operand+=additiveExpression
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{expression::Expression.operand+=current}
 		public Action getExpressionOperandAction_1_0() { return cExpressionOperandAction_1_0; }
 		
-		//operator=('<' | '<=' | '>' | '>=')
+		//operator=( '<' | '<=' | '>' | '>=' )
 		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }
 		
-		//('<' | '<=' | '>' | '>=')
+		//( '<' | '<=' | '>' | '>=' )
 		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }
 		
 		//'<'
@@ -982,20 +1094,38 @@
 		private final Assignment cOperandAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
 		private final RuleCall cOperandMultiplicativeExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
-		//additiveExpression sew::WValueSpecification:
-		//	multiplicativeExpression ({expression::Expression.operand+=current} operator='+' operand+=multiplicativeExpression
-		//	('+' operand+=multiplicativeExpression)*)?;
+		//additiveExpression returns sew::WValueSpecification
+		//: multiplicativeExpression
+		//    ( ( {expression::Expression.operand+=current}
+		//        operator='+' operand+=multiplicativeExpression
+		//        ( '+' operand+=multiplicativeExpression )* )
+		////    | ( {expression::Expression.operand+=current}
+		////        operator='-' operand+=multiplicativeExpression
+		////        ( '-' operand+=multiplicativeExpression )* )
+		//    )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//multiplicativeExpression ({expression::Expression.operand+=current} operator='+' operand+=multiplicativeExpression ('+'
-		//operand+=multiplicativeExpression)*)?
+		// multiplicativeExpression
+		//    ( ( {expression::Expression.operand+=current}
+		//        operator='+' operand+=multiplicativeExpression
+		//        ( '+' operand+=multiplicativeExpression )* )
+		////    | ( {expression::Expression.operand+=current}
+		////        operator='-' operand+=multiplicativeExpression
+		////        ( '-' operand+=multiplicativeExpression )* )
+		//    )?
 		public Group getGroup() { return cGroup; }
 		
 		//multiplicativeExpression
 		public RuleCall getMultiplicativeExpressionParserRuleCall_0() { return cMultiplicativeExpressionParserRuleCall_0; }
 		
-		//({expression::Expression.operand+=current} operator='+' operand+=multiplicativeExpression ('+'
-		//operand+=multiplicativeExpression)*)?
+		//    ( ( {expression::Expression.operand+=current}
+		//        operator='+' operand+=multiplicativeExpression
+		//        ( '+' operand+=multiplicativeExpression )* )
+		////    | ( {expression::Expression.operand+=current}
+		////        operator='-' operand+=multiplicativeExpression
+		////        ( '-' operand+=multiplicativeExpression )* )
+		//    )?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{expression::Expression.operand+=current}
@@ -1013,7 +1143,7 @@
 		//multiplicativeExpression
 		public RuleCall getOperandMultiplicativeExpressionParserRuleCall_1_2_0() { return cOperandMultiplicativeExpressionParserRuleCall_1_2_0; }
 		
-		//('+' operand+=multiplicativeExpression)*
+		//( '+' operand+=multiplicativeExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//'+'
@@ -1071,31 +1201,61 @@
 		private final Assignment cOperandAssignment_1_3_3_1 = (Assignment)cGroup_1_3_3.eContents().get(1);
 		private final RuleCall cOperandPrimaryExpressionParserRuleCall_1_3_3_1_0 = (RuleCall)cOperandAssignment_1_3_3_1.eContents().get(0);
 		
-		//multiplicativeExpression sew::WValueSpecification:
-		//	primaryExpression ({expression::Expression.operand+=current} operator='*' operand+=primaryExpression ('*'
-		//	operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='**' operand+=primaryExpression
-		//	('**' operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='/' operand+=primaryExpression
-		//	('/' operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='%' operand+=primaryExpression
-		//	('%' operand+=primaryExpression)*)?;
+		//multiplicativeExpression returns sew::WValueSpecification
+		//: primaryExpression
+		//    ( ( {expression::Expression.operand+=current}
+		//        operator='*' operand+=primaryExpression
+		//        ( '*' operand+=primaryExpression )* )
+		//    | ( {expression::Expression.operand+=current}
+		//        operator='**' operand+=primaryExpression
+		//        ( '**' operand+=primaryExpression )* )
+		//    | ( {expression::Expression.operand+=current}
+		//        operator='/' operand+=primaryExpression
+		//        ( '/' operand+=primaryExpression )* )
+		//    | ( {expression::Expression.operand+=current}
+		//        operator='%' operand+=primaryExpression
+		//        ( '%' operand+=primaryExpression )* )
+		//    )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//primaryExpression ({expression::Expression.operand+=current} operator='*' operand+=primaryExpression ('*'
-		//operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='**' operand+=primaryExpression ('**'
-		//operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='/' operand+=primaryExpression ('/'
-		//operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='%' operand+=primaryExpression ('%'
-		//operand+=primaryExpression)*)?
+		//primaryExpression
+		//   ( ( {expression::Expression.operand+=current}
+		//       operator='*' operand+=primaryExpression
+		//       ( '*' operand+=primaryExpression )* )
+		//   | ( {expression::Expression.operand+=current}
+		//       operator='**' operand+=primaryExpression
+		//       ( '**' operand+=primaryExpression )* )
+		//   | ( {expression::Expression.operand+=current}
+		//       operator='/' operand+=primaryExpression
+		//       ( '/' operand+=primaryExpression )* )
+		//   | ( {expression::Expression.operand+=current}
+		//       operator='%' operand+=primaryExpression
+		//       ( '%' operand+=primaryExpression )* )
+		//   )?
 		public Group getGroup() { return cGroup; }
 		
 		//primaryExpression
 		public RuleCall getPrimaryExpressionParserRuleCall_0() { return cPrimaryExpressionParserRuleCall_0; }
 		
-		//({expression::Expression.operand+=current} operator='*' operand+=primaryExpression ('*' operand+=primaryExpression)* |
-		//{expression::Expression.operand+=current} operator='**' operand+=primaryExpression ('**' operand+=primaryExpression)* |
-		//{expression::Expression.operand+=current} operator='/' operand+=primaryExpression ('/' operand+=primaryExpression)* |
-		//{expression::Expression.operand+=current} operator='%' operand+=primaryExpression ('%' operand+=primaryExpression)*)?
+		//( ( {expression::Expression.operand+=current}
+		//    operator='*' operand+=primaryExpression
+		//    ( '*' operand+=primaryExpression )* )
+		//| ( {expression::Expression.operand+=current}
+		//    operator='**' operand+=primaryExpression
+		//    ( '**' operand+=primaryExpression )* )
+		//| ( {expression::Expression.operand+=current}
+		//    operator='/' operand+=primaryExpression
+		//    ( '/' operand+=primaryExpression )* )
+		//| ( {expression::Expression.operand+=current}
+		//    operator='%' operand+=primaryExpression
+		//    ( '%' operand+=primaryExpression )* )
+		//)?
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//{expression::Expression.operand+=current} operator='*' operand+=primaryExpression ('*' operand+=primaryExpression)*
+		//( {expression::Expression.operand+=current}
+		//       operator='*' operand+=primaryExpression
+		//       ( '*' operand+=primaryExpression )* )
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//{expression::Expression.operand+=current}
@@ -1113,7 +1273,7 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_0_2_0() { return cOperandPrimaryExpressionParserRuleCall_1_0_2_0; }
 		
-		//('*' operand+=primaryExpression)*
+		//( '*' operand+=primaryExpression )*
 		public Group getGroup_1_0_3() { return cGroup_1_0_3; }
 		
 		//'*'
@@ -1125,7 +1285,9 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_0_3_1_0() { return cOperandPrimaryExpressionParserRuleCall_1_0_3_1_0; }
 		
-		//{expression::Expression.operand+=current} operator='**' operand+=primaryExpression ('**' operand+=primaryExpression)*
+		//( {expression::Expression.operand+=current}
+		//       operator='**' operand+=primaryExpression
+		//       ( '**' operand+=primaryExpression )* )
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//{expression::Expression.operand+=current}
@@ -1143,7 +1305,7 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_1_2_0() { return cOperandPrimaryExpressionParserRuleCall_1_1_2_0; }
 		
-		//('**' operand+=primaryExpression)*
+		//( '**' operand+=primaryExpression )*
 		public Group getGroup_1_1_3() { return cGroup_1_1_3; }
 		
 		//'**'
@@ -1155,7 +1317,9 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_1_3_1_0() { return cOperandPrimaryExpressionParserRuleCall_1_1_3_1_0; }
 		
-		//{expression::Expression.operand+=current} operator='/' operand+=primaryExpression ('/' operand+=primaryExpression)*
+		//( {expression::Expression.operand+=current}
+		//       operator='/' operand+=primaryExpression
+		//       ( '/' operand+=primaryExpression )* )
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//{expression::Expression.operand+=current}
@@ -1173,7 +1337,7 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_2_2_0() { return cOperandPrimaryExpressionParserRuleCall_1_2_2_0; }
 		
-		//('/' operand+=primaryExpression)*
+		//( '/' operand+=primaryExpression )*
 		public Group getGroup_1_2_3() { return cGroup_1_2_3; }
 		
 		//'/'
@@ -1185,7 +1349,9 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_2_3_1_0() { return cOperandPrimaryExpressionParserRuleCall_1_2_3_1_0; }
 		
-		//{expression::Expression.operand+=current} operator='%' operand+=primaryExpression ('%' operand+=primaryExpression)*
+		//( {expression::Expression.operand+=current}
+		//       operator='%' operand+=primaryExpression
+		//       ( '%' operand+=primaryExpression )* )
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//{expression::Expression.operand+=current}
@@ -1203,7 +1369,7 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_3_2_0() { return cOperandPrimaryExpressionParserRuleCall_1_3_2_0; }
 		
-		//('%' operand+=primaryExpression)*
+		//( '%' operand+=primaryExpression )*
 		public Group getGroup_1_3_3() { return cGroup_1_3_3; }
 		
 		//'%'
@@ -1243,15 +1409,20 @@
 		private final Keyword cRightParenthesisKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
 		private final RuleCall cLiteralExpressionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
 		
-		//primaryExpression sew::WValueSpecification:
-		//	'+' primaryExpression
-		//	| {expression::Expression} (operator='-' operand+=primaryExpression) | {expression::Expression} (operator=('!' |
-		//	'not') operand+=primaryExpression) | '(' Expression ')'
-		//	| LiteralExpression;
+		//primaryExpression returns sew::WValueSpecification
+		//: '+' primaryExpression
+		//| { expression::Expression }( operator='-' operand+=primaryExpression )
+		//| { expression::Expression }( operator=( '!' | 'not' ) operand+=primaryExpression )
+		//| '(' Expression ')'
+		//| LiteralExpression
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'+' primaryExpression | {expression::Expression} (operator='-' operand+=primaryExpression) | {expression::Expression}
-		//(operator=('!' | 'not') operand+=primaryExpression) | '(' Expression ')' | LiteralExpression
+		// '+' primaryExpression
+		//| { expression::Expression }( operator='-' operand+=primaryExpression )
+		//| { expression::Expression }( operator=( '!' | 'not' ) operand+=primaryExpression )
+		//| '(' Expression ')'
+		//| LiteralExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'+' primaryExpression
@@ -1263,13 +1434,13 @@
 		//primaryExpression
 		public RuleCall getPrimaryExpressionParserRuleCall_0_1() { return cPrimaryExpressionParserRuleCall_0_1; }
 		
-		//{expression::Expression} (operator='-' operand+=primaryExpression)
+		//{ expression::Expression }( operator='-' operand+=primaryExpression )
 		public Group getGroup_1() { return cGroup_1; }
 		
-		//{expression::Expression}
+		//{ expression::Expression }
 		public Action getExpressionAction_1_0() { return cExpressionAction_1_0; }
 		
-		//(operator='-' operand+=primaryExpression)
+		//( operator='-' operand+=primaryExpression )
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//operator='-'
@@ -1284,19 +1455,19 @@
 		//primaryExpression
 		public RuleCall getOperandPrimaryExpressionParserRuleCall_1_1_1_0() { return cOperandPrimaryExpressionParserRuleCall_1_1_1_0; }
 		
-		//{expression::Expression} (operator=('!' | 'not') operand+=primaryExpression)
+		//{ expression::Expression }( operator=( '!' | 'not' ) operand+=primaryExpression )
 		public Group getGroup_2() { return cGroup_2; }
 		
-		//{expression::Expression}
+		//{ expression::Expression }
 		public Action getExpressionAction_2_0() { return cExpressionAction_2_0; }
 		
-		//(operator=('!' | 'not') operand+=primaryExpression)
+		//( operator=( '!' | 'not' ) operand+=primaryExpression )
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
-		//operator=('!' | 'not')
+		//operator=( '!' | 'not' )
 		public Assignment getOperatorAssignment_2_1_0() { return cOperatorAssignment_2_1_0; }
 		
-		//('!' | 'not')
+		//( '!' | 'not' )
 		public Alternatives getOperatorAlternatives_2_1_0_0() { return cOperatorAlternatives_2_1_0_0; }
 		
 		//'!'
@@ -1341,24 +1512,34 @@
 		private final RuleCall cLiteralVariableReferenceParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
 		private final RuleCall cLiteralInstanceReferenceParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
 		
-		//LiteralExpression sew::WValueSpecification:
-		//	LiteralBooleanValue
-		//	| LiteralCharacterValue
-		//	| LiteralIntegerValue
-		//	| LiteralRationalValue
-		//	| LiteralFloatValue
-		//	//| LiteralRealValue
-		//	| LiteralStringValue
-		//	| LiteralNullValue
-		//	| LiteralArrayValue
-		//	| LiteralObjectReference
-		//	| LiteralVariableReference
-		//	| LiteralInstanceReference;
+		//LiteralExpression returns sew::WValueSpecification
+		//: LiteralBooleanValue
+		//| LiteralCharacterValue
+		//| LiteralIntegerValue
+		//| LiteralRationalValue
+		//| LiteralFloatValue
+		////| LiteralRealValue
+		//| LiteralStringValue
+		//| LiteralNullValue
+		//| LiteralArrayValue
+		//| LiteralObjectReference
+		//| LiteralVariableReference
+		//| LiteralInstanceReference
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralBooleanValue | LiteralCharacterValue | LiteralIntegerValue | LiteralRationalValue | LiteralFloatValue //| LiteralRealValue
-		//| LiteralStringValue | LiteralNullValue | LiteralArrayValue | LiteralObjectReference | LiteralVariableReference |
-		//LiteralInstanceReference
+		// LiteralBooleanValue
+		//| LiteralCharacterValue
+		//| LiteralIntegerValue
+		//| LiteralRationalValue
+		//| LiteralFloatValue
+		////| LiteralRealValue
+		//| LiteralStringValue
+		//| LiteralNullValue
+		//| LiteralArrayValue
+		//| LiteralObjectReference
+		//| LiteralVariableReference
+		//| LiteralInstanceReference
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralBooleanValue
@@ -1411,13 +1592,22 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Array of Literal Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralArrayValue expression::LiteralArrayValue:
-		//	{expression::LiteralArrayValue}
-		//	'[' (values+=ValueSpecification (',' values+=ValueSpecification)*)?
-		//	']';
+		//LiteralArrayValue  returns expression::LiteralArrayValue
+		//: {expression::LiteralArrayValue}
+		//    '['
+		//        ( values+=ValueSpecification
+		//            ( ',' values+=ValueSpecification )*
+		//        )?
+		//    ']'
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralArrayValue} '[' (values+=ValueSpecification (',' values+=ValueSpecification)*)? ']'
+		//{expression::LiteralArrayValue}
+		//   '['
+		//       ( values+=ValueSpecification
+		//           ( ',' values+=ValueSpecification )*
+		//       )?
+		//   ']'
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralArrayValue}
@@ -1426,7 +1616,9 @@
 		//'['
 		public Keyword getLeftSquareBracketKeyword_1() { return cLeftSquareBracketKeyword_1; }
 		
-		//(values+=ValueSpecification (',' values+=ValueSpecification)*)?
+		//( values+=ValueSpecification
+		//    ( ',' values+=ValueSpecification )*
+		//)?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//values+=ValueSpecification
@@ -1435,7 +1627,7 @@
 		//ValueSpecification
 		public RuleCall getValuesValueSpecificationParserRuleCall_2_0_0() { return cValuesValueSpecificationParserRuleCall_2_0_0; }
 		
-		//(',' values+=ValueSpecification)*
+		//( ',' values+=ValueSpecification )*
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//','
@@ -1464,17 +1656,18 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Object Reference Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralObjectReference expression::LiteralObjectReference:
-		//	'&'? (object=[sew::WObject|UFI] | symbol=UFI);
+		//LiteralObjectReference returns expression::LiteralObjectReference
+		//: ( '&' )? ( object=[sew::WObject|UFI] | symbol=UFI )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'&'? (object=[sew::WObject|UFI] | symbol=UFI)
+		//( '&' )? ( object=[sew::WObject|UFI] | symbol=UFI )
 		public Group getGroup() { return cGroup; }
 		
-		//'&'?
+		//( '&' )?
 		public Keyword getAmpersandKeyword_0() { return cAmpersandKeyword_0; }
 		
-		//(object=[sew::WObject|UFI] | symbol=UFI)
+		//( object=[sew::WObject|UFI] | symbol=UFI )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//object=[sew::WObject|UFI]
@@ -1500,8 +1693,9 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralBooleanValue expression::LiteralBooleanValue:
-		//	value=EBoolean;
+		//LiteralBooleanValue  returns expression::LiteralBooleanValue
+		//: value=EBoolean
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//value=EBoolean
@@ -1515,8 +1709,9 @@
 		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
 		private final RuleCall cValueECharParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
 		
-		//LiteralCharacterValue expression::LiteralCharacterValue:
-		//	value=EChar;
+		//LiteralCharacterValue  returns expression::LiteralCharacterValue
+		//: value=EChar
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//value=EChar
@@ -1530,8 +1725,9 @@
 		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
 		private final RuleCall cValueELongParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
 		
-		//LiteralIntegerValue expression::LiteralIntegerValue:
-		//	value=ELong;
+		//LiteralIntegerValue  returns expression::LiteralIntegerValue
+		//: value=ELong
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//value=ELong
@@ -1549,8 +1745,9 @@
 		private final Assignment cDenominatorAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cDenominatorELongParserRuleCall_2_0 = (RuleCall)cDenominatorAssignment_2.eContents().get(0);
 		
-		//LiteralRationalValue expression::LiteralRationalValue:
-		//	numerator=ELong '/' denominator=ELong;
+		//LiteralRationalValue  returns expression::LiteralRationalValue
+		//: numerator=ELong '/' denominator=ELong
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//numerator=ELong '/' denominator=ELong
@@ -1576,8 +1773,9 @@
 		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
 		private final RuleCall cValueEDoubleParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
 		
-		//LiteralFloatValue expression::LiteralFloatValue:
-		//	value=EDouble;
+		//LiteralFloatValue  returns expression::LiteralFloatValue
+		//: value=EDouble
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//value=EDouble
@@ -1591,8 +1789,9 @@
 		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
 		private final RuleCall cValueEBigDecimalParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
 		
-		//LiteralRealValue expression::LiteralRealValue:
-		//	value=EBigDecimal;
+		//LiteralRealValue  returns expression::LiteralRealValue
+		//: value=EBigDecimal
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//value=EBigDecimal
@@ -1606,8 +1805,9 @@
 		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
 		private final RuleCall cValueEStringParserRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
 		
-		//LiteralStringValue expression::LiteralStringValue:
-		//	value=EString;
+		//LiteralStringValue  returns expression::LiteralStringValue
+		//: value=EString
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//value=EString
@@ -1627,12 +1827,14 @@
 		private final RuleCall cTypeXIDParserRuleCall_2_1_0 = (RuleCall)cTypeAssignment_2_1.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
 		
-		//LiteralNullValue expression::LiteralNullValue:
-		//	{expression::LiteralNullValue}
-		//	'null' ('<' type=XID '>')?;
+		//LiteralNullValue  returns expression::LiteralNullValue
+		//: {expression::LiteralNullValue}
+		//    'null' ( '<' type=XID '>' )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralNullValue} 'null' ('<' type=XID '>')?
+		//{expression::LiteralNullValue}
+		//   'null' ( '<' type=XID '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralNullValue}
@@ -1641,7 +1843,7 @@
 		//'null'
 		public Keyword getNullKeyword_1() { return cNullKeyword_1; }
 		
-		//('<' type=XID '>')?
+		//( '<' type=XID '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -1662,12 +1864,14 @@
 		private final RuleCall cLiteralTimeVariableParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cLiteralTimeDeltaVariableParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//LiteralVariableReference expression::LiteralReferenceValue:
-		//	LiteralTimeVariable
-		//	| LiteralTimeDeltaVariable;
+		//LiteralVariableReference returns expression::LiteralReferenceValue
+		//: LiteralTimeVariable
+		//| LiteralTimeDeltaVariable
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralTimeVariable | LiteralTimeDeltaVariable
+		// LiteralTimeVariable
+		//| LiteralTimeDeltaVariable
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralTimeVariable
@@ -1683,17 +1887,18 @@
 		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final Keyword cSymbolTimeKeyword_1_0 = (Keyword)cSymbolAssignment_1.eContents().get(0);
 		
-		//LiteralTimeVariable expression::LiteralTimeVariable:
-		//	{expression::LiteralTimeVariable} symbol='$time';
+		//LiteralTimeVariable returns expression::LiteralTimeVariable
+		//    : {expression::LiteralTimeVariable} ( symbol='$time' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralTimeVariable} symbol='$time'
+		//{expression::LiteralTimeVariable} ( symbol='$time' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralTimeVariable}
 		public Action getLiteralTimeVariableAction_0() { return cLiteralTimeVariableAction_0; }
 		
-		//symbol='$time'
+		//( symbol='$time' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
 		//'$time'
@@ -1706,17 +1911,18 @@
 		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final Keyword cSymbolDeltaKeyword_1_0 = (Keyword)cSymbolAssignment_1.eContents().get(0);
 		
-		//LiteralTimeDeltaVariable expression::LiteralTimeDeltaVariable:
-		//	{expression::LiteralTimeDeltaVariable} symbol='$delta';
+		//LiteralTimeDeltaVariable returns expression::LiteralTimeDeltaVariable
+		//    : {expression::LiteralTimeDeltaVariable} ( symbol='$delta' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralTimeDeltaVariable} symbol='$delta'
+		//{expression::LiteralTimeDeltaVariable} ( symbol='$delta' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralTimeDeltaVariable}
 		public Action getLiteralTimeDeltaVariableAction_0() { return cLiteralTimeDeltaVariableAction_0; }
 		
-		//symbol='$delta'
+		//( symbol='$delta' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
 		//'$delta'
@@ -1732,17 +1938,22 @@
 		private final RuleCall cLiteralSystemInstanceParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
 		private final RuleCall cLiteralEnvInstanceParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
 		
-		//LiteralInstanceReference expression::LiteralReferenceValue:
-		//	LiteralThisInstance
-		//	| LiteralSelfInstance
-		//	| LiteralParentInstance
-		//	| LiteralSuperInstance
-		//	| LiteralSystemInstance
-		//	| LiteralEnvInstance;
+		//LiteralInstanceReference returns expression::LiteralReferenceValue
+		//: LiteralThisInstance
+		//| LiteralSelfInstance
+		//| LiteralParentInstance
+		//| LiteralSuperInstance
+		//| LiteralSystemInstance
+		//| LiteralEnvInstance
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralThisInstance | LiteralSelfInstance | LiteralParentInstance | LiteralSuperInstance | LiteralSystemInstance |
-		//LiteralEnvInstance
+		// LiteralThisInstance
+		//| LiteralSelfInstance
+		//| LiteralParentInstance
+		//| LiteralSuperInstance
+		//| LiteralSystemInstance
+		//| LiteralEnvInstance
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralThisInstance
@@ -1770,17 +1981,18 @@
 		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final Keyword cSymbolThisKeyword_1_0 = (Keyword)cSymbolAssignment_1.eContents().get(0);
 		
-		//LiteralThisInstance expression::LiteralThisInstance:
-		//	{expression::LiteralThisInstance} symbol='$this';
+		//LiteralThisInstance returns expression::LiteralThisInstance
+		//: {expression::LiteralThisInstance} ( symbol='$this' )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralThisInstance} symbol='$this'
+		//{expression::LiteralThisInstance} ( symbol='$this' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralThisInstance}
 		public Action getLiteralThisInstanceAction_0() { return cLiteralThisInstanceAction_0; }
 		
-		//symbol='$this'
+		//( symbol='$this' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
 		//'$this'
@@ -1793,17 +2005,18 @@
 		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final Keyword cSymbolSelfKeyword_1_0 = (Keyword)cSymbolAssignment_1.eContents().get(0);
 		
-		//LiteralSelfInstance expression::LiteralSelfInstance:
-		//	{expression::LiteralSelfInstance} symbol='$self';
+		//LiteralSelfInstance returns expression::LiteralSelfInstance
+		//: {expression::LiteralSelfInstance} ( symbol='$self' )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralSelfInstance} symbol='$self'
+		//{expression::LiteralSelfInstance} ( symbol='$self' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralSelfInstance}
 		public Action getLiteralSelfInstanceAction_0() { return cLiteralSelfInstanceAction_0; }
 		
-		//symbol='$self'
+		//( symbol='$self' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
 		//'$self'
@@ -1816,17 +2029,18 @@
 		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final Keyword cSymbolParentKeyword_1_0 = (Keyword)cSymbolAssignment_1.eContents().get(0);
 		
-		//LiteralParentInstance expression::LiteralParentInstance:
-		//	{expression::LiteralParentInstance} symbol='$parent';
+		//LiteralParentInstance returns expression::LiteralParentInstance
+		//: {expression::LiteralParentInstance} ( symbol='$parent' )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralParentInstance} symbol='$parent'
+		//{expression::LiteralParentInstance} ( symbol='$parent' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralParentInstance}
 		public Action getLiteralParentInstanceAction_0() { return cLiteralParentInstanceAction_0; }
 		
-		//symbol='$parent'
+		//( symbol='$parent' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
 		//'$parent'
@@ -1839,17 +2053,18 @@
 		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final Keyword cSymbolSuperKeyword_1_0 = (Keyword)cSymbolAssignment_1.eContents().get(0);
 		
-		//LiteralSuperInstance expression::LiteralSuperInstance:
-		//	{expression::LiteralSuperInstance} symbol='$super';
+		//LiteralSuperInstance returns expression::LiteralSuperInstance
+		//: {expression::LiteralSuperInstance} ( symbol='$super' )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralSuperInstance} symbol='$super'
+		//{expression::LiteralSuperInstance} ( symbol='$super' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralSuperInstance}
 		public Action getLiteralSuperInstanceAction_0() { return cLiteralSuperInstanceAction_0; }
 		
-		//symbol='$super'
+		//( symbol='$super' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
 		//'$super'
@@ -1862,17 +2077,18 @@
 		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final Keyword cSymbolSystemKeyword_1_0 = (Keyword)cSymbolAssignment_1.eContents().get(0);
 		
-		//LiteralSystemInstance expression::LiteralSystemInstance:
-		//	{expression::LiteralSystemInstance} symbol='$system';
+		//LiteralSystemInstance returns expression::LiteralSystemInstance
+		//: {expression::LiteralSystemInstance} ( symbol='$system' )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralSystemInstance} symbol='$system'
+		//{expression::LiteralSystemInstance} ( symbol='$system' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralSystemInstance}
 		public Action getLiteralSystemInstanceAction_0() { return cLiteralSystemInstanceAction_0; }
 		
-		//symbol='$system'
+		//( symbol='$system' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
 		//'$system'
@@ -1887,20 +2103,21 @@
 		private final Keyword cSymbolEnvKeyword_1_0_0 = (Keyword)cSymbolAlternatives_1_0.eContents().get(0);
 		private final Keyword cSymbolEnvKeyword_1_0_1 = (Keyword)cSymbolAlternatives_1_0.eContents().get(1);
 		
-		//LiteralEnvInstance expression::LiteralEnvInstance:
-		//	{expression::LiteralEnvInstance} symbol=('$env' | 'env');
+		//LiteralEnvInstance returns expression::LiteralEnvInstance
+		//: {expression::LiteralEnvInstance} symbol=( '$env' | 'env' )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::LiteralEnvInstance} symbol=('$env' | 'env')
+		//{expression::LiteralEnvInstance} symbol=( '$env' | 'env' )
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::LiteralEnvInstance}
 		public Action getLiteralEnvInstanceAction_0() { return cLiteralEnvInstanceAction_0; }
 		
-		//symbol=('$env' | 'env')
+		//symbol=( '$env' | 'env' )
 		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }
 		
-		//('$env' | 'env')
+		//( '$env' | 'env' )
 		public Alternatives getSymbolAlternatives_1_0() { return cSymbolAlternatives_1_0; }
 		
 		//'$env'
@@ -1918,12 +2135,14 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Terminal Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//EBoolean ecore::EBoolean:
-		//	'true'
-		//	| 'false';
+		//EBoolean returns ecore::EBoolean
+		//: 'true'
+		//| 'false'
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'true' | 'false'
+		// 'true'
+		//| 'false'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'true'
@@ -1936,8 +2155,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.sew.xtext.SEW.EChar");
 		private final RuleCall cCHARACTERTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//EChar ecore::EChar:
-		//	CHARACTER;
+		//EChar returns ecore::EChar
+		//: CHARACTER
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//CHARACTER
@@ -1949,8 +2169,8 @@
 		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
 		
-		//ELong ecore::ELong:
-		//	'-'? INT;
+		//ELong returns ecore::ELong:
+		//    '-'? INT;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'-'? INT
@@ -1970,8 +2190,8 @@
 		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
 		private final RuleCall cINTTerminalRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
 		
-		//EDouble ecore::EDouble:
-		//	'-'? INT? '.' INT //(('E'|'e') '-'? INT)?
+		//EDouble returns ecore::EDouble
+		//: '-'? INT? '.' INT //(('E'|'e') '-'? INT)?
 		//;
 		@Override public ParserRule getRule() { return rule; }
 		
@@ -1997,8 +2217,9 @@
 		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final RuleCall cINTTerminalRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
 		
-		//EBigDecimal ecore::EBigDecimal:
-		//	INT? '.' INT;
+		//EBigDecimal returns ecore::EBigDecimal
+		//: INT? '.' INT
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//INT? '.' INT
@@ -2017,8 +2238,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.sew.xtext.SEW.EString");
 		private final RuleCall cSTRINGTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//EString:
-		//	STRING;
+		//EString returns ecore::EString
+		//: STRING
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//STRING
@@ -2037,13 +2259,16 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// @DEPRECATED Diversity Configuration Specification
 		//////////////////////////////////////////////////////////////////////////////////
-		//DeprecatedReservedWord:
-		//	'form' | 'endform'
-		//	| 'prototype' | 'endprototype'
-		//	| 'section' | 'endsection';
+		//DeprecatedReservedWord
+		//: 'form'      | 'endform'
+		//| 'prototype' | 'endprototype'
+		//| 'section'   | 'endsection'
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'form' | 'endform' | 'prototype' | 'endprototype' | 'section' | 'endsection'
+		// 'form'      | 'endform'
+		//| 'prototype' | 'endprototype'
+		//| 'section'   | 'endsection'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'form'
@@ -2098,25 +2323,37 @@
 		private final RuleCall cElementDeprecatedPropertyParserRuleCall_1_8_0 = (RuleCall)cElementAssignment_1_8.eContents().get(0);
 		private final Keyword cEndprototypeKeyword_1_9 = (Keyword)cGroup_1.eContents().get(9);
 		
-		//DeprecatedObject sew::WObject:
-		//	{sew::WObject}
-		//	'form'
-		//	name=UFI description=EString? 'as' '&'? type=UFI 'is'
-		//	element+=DeprecatedProperty*
-		//	'endform'
-		//	| {sew::WObject}
-		//	'prototype'
-		//	name=UFI description=EString? 'as' '&'? type=UFI 'is'
-		//	element+=DeprecatedProperty*
-		//	'endprototype';
+		//DeprecatedObject returns sew::WObject
+		//: {sew::WObject}
+		//    'form'
+		//        name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+		//        ( element+=DeprecatedProperty )*
+		//    'endform'
+		//| {sew::WObject}
+		//    'prototype'
+		//        name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+		//        ( element+=DeprecatedProperty )*
+		//    'endprototype'
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{sew::WObject} 'form' name=UFI description=EString? 'as' '&'? type=UFI 'is' element+=DeprecatedProperty* 'endform' |
-		//{sew::WObject} 'prototype' name=UFI description=EString? 'as' '&'? type=UFI 'is' element+=DeprecatedProperty*
-		//'endprototype'
+		// {sew::WObject}
+		//    'form'
+		//        name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+		//        ( element+=DeprecatedProperty )*
+		//    'endform'
+		//| {sew::WObject}
+		//    'prototype'
+		//        name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+		//        ( element+=DeprecatedProperty )*
+		//    'endprototype'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{sew::WObject} 'form' name=UFI description=EString? 'as' '&'? type=UFI 'is' element+=DeprecatedProperty* 'endform'
+		//{sew::WObject}
+		//   'form'
+		//       name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+		//       ( element+=DeprecatedProperty )*
+		//   'endform'
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//{sew::WObject}
@@ -2131,7 +2368,7 @@
 		//UFI
 		public RuleCall getNameUFIParserRuleCall_0_2_0() { return cNameUFIParserRuleCall_0_2_0; }
 		
-		//description=EString?
+		//( description=EString )?
 		public Assignment getDescriptionAssignment_0_3() { return cDescriptionAssignment_0_3; }
 		
 		//EString
@@ -2140,7 +2377,7 @@
 		//'as'
 		public Keyword getAsKeyword_0_4() { return cAsKeyword_0_4; }
 		
-		//'&'?
+		//( '&' )?
 		public Keyword getAmpersandKeyword_0_5() { return cAmpersandKeyword_0_5; }
 		
 		//type=UFI
@@ -2152,7 +2389,7 @@
 		//'is'
 		public Keyword getIsKeyword_0_7() { return cIsKeyword_0_7; }
 		
-		//element+=DeprecatedProperty*
+		//( element+=DeprecatedProperty )*
 		public Assignment getElementAssignment_0_8() { return cElementAssignment_0_8; }
 		
 		//DeprecatedProperty
@@ -2161,8 +2398,11 @@
 		//'endform'
 		public Keyword getEndformKeyword_0_9() { return cEndformKeyword_0_9; }
 		
-		//{sew::WObject} 'prototype' name=UFI description=EString? 'as' '&'? type=UFI 'is' element+=DeprecatedProperty*
-		//'endprototype'
+		//{sew::WObject}
+		//   'prototype'
+		//       name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+		//       ( element+=DeprecatedProperty )*
+		//   'endprototype'
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{sew::WObject}
@@ -2177,7 +2417,7 @@
 		//UFI
 		public RuleCall getNameUFIParserRuleCall_1_2_0() { return cNameUFIParserRuleCall_1_2_0; }
 		
-		//description=EString?
+		//( description=EString )?
 		public Assignment getDescriptionAssignment_1_3() { return cDescriptionAssignment_1_3; }
 		
 		//EString
@@ -2186,7 +2426,7 @@
 		//'as'
 		public Keyword getAsKeyword_1_4() { return cAsKeyword_1_4; }
 		
-		//'&'?
+		//( '&' )?
 		public Keyword getAmpersandKeyword_1_5() { return cAmpersandKeyword_1_5; }
 		
 		//type=UFI
@@ -2198,7 +2438,7 @@
 		//'is'
 		public Keyword getIsKeyword_1_7() { return cIsKeyword_1_7; }
 		
-		//element+=DeprecatedProperty*
+		//( element+=DeprecatedProperty )*
 		public Assignment getElementAssignment_1_8() { return cElementAssignment_1_8; }
 		
 		//DeprecatedProperty
@@ -2213,12 +2453,14 @@
 		private final RuleCall cDeprecatedSectionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cDeprecatedAttributeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//DeprecatedProperty sew::WProperty:
-		//	DeprecatedSection
-		//	| DeprecatedAttribute;
+		//DeprecatedProperty returns sew::WProperty
+		//: DeprecatedSection
+		//| DeprecatedAttribute
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//DeprecatedSection | DeprecatedAttribute
+		// DeprecatedSection
+		//| DeprecatedAttribute
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//DeprecatedSection
@@ -2264,24 +2506,35 @@
 		private final RuleCall cElementDeprecatedObjectParserRuleCall_1_2_1_1_0_1 = (RuleCall)cElementAlternatives_1_2_1_1_0.eContents().get(1);
 		private final RuleCall cElementObjectParserRuleCall_1_2_1_1_0_2 = (RuleCall)cElementAlternatives_1_2_1_1_0.eContents().get(2);
 		
-		//DeprecatedSection sew::WSection:
-		//	{sew::WSection}
-		//	'section' name=XID
-		//	//		( element+=( Object | Attribute  ) )*
-		//	element+=(DeprecatedAttribute | DeprecatedObject | Object)*
-		//	'endsection' XID?
-		//	| name=XID description=EString? ('[' element+=(DeprecatedAttribute | DeprecatedObject | Object)* ']'
-		//	| ':' element+=(DeprecatedAttribute | DeprecatedObject | Object)*);
+		//DeprecatedSection returns sew::WSection
+		//: {sew::WSection}
+		//    'section'  name=XID
+		////        ( element+=( Object | Attribute  ) )*
+		//        ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+		//    'endsection'  ( XID )?
+		//| name=XID  ( description=EString )?
+		//    ( '[' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )* ']'
+		//    | ':' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+		//    )
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{sew::WSection} 'section' name=XID //		( element+=( Object | Attribute  ) )*
-		//element+=(DeprecatedAttribute | DeprecatedObject | Object)* 'endsection' XID? | name=XID description=EString? ('['
-		//element+=(DeprecatedAttribute | DeprecatedObject | Object)* ']' | ':' element+=(DeprecatedAttribute | DeprecatedObject
-		//| Object)*)
+		// {sew::WSection}
+		//    'section'  name=XID
+		////        ( element+=( Object | Attribute  ) )*
+		//        ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+		//    'endsection'  ( XID )?
+		//| name=XID  ( description=EString )?
+		//    ( '[' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )* ']'
+		//    | ':' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+		//    )
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{sew::WSection} 'section' name=XID //		( element+=( Object | Attribute  ) )*
-		//element+=(DeprecatedAttribute | DeprecatedObject | Object)* 'endsection' XID?
+		// {sew::WSection}
+		//    'section'  name=XID
+		////        ( element+=( Object | Attribute  ) )*
+		//        ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+		//    'endsection'  ( XID )?
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//{sew::WSection}
@@ -2296,11 +2549,11 @@
 		//XID
 		public RuleCall getNameXIDParserRuleCall_0_2_0() { return cNameXIDParserRuleCall_0_2_0; }
 		
-		////		( element+=( Object | Attribute  ) )*
-		//element+=(DeprecatedAttribute | DeprecatedObject | Object)*
+		////        ( element+=( Object | Attribute  ) )*
+		//        ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
 		public Assignment getElementAssignment_0_3() { return cElementAssignment_0_3; }
 		
-		//(DeprecatedAttribute | DeprecatedObject | Object)
+		//( DeprecatedAttribute | DeprecatedObject | Object )
 		public Alternatives getElementAlternatives_0_3_0() { return cElementAlternatives_0_3_0; }
 		
 		//DeprecatedAttribute
@@ -2315,11 +2568,13 @@
 		//'endsection'
 		public Keyword getEndsectionKeyword_0_4() { return cEndsectionKeyword_0_4; }
 		
-		//XID?
+		//( XID )?
 		public RuleCall getXIDParserRuleCall_0_5() { return cXIDParserRuleCall_0_5; }
 		
-		//name=XID description=EString? ('[' element+=(DeprecatedAttribute | DeprecatedObject | Object)* ']' | ':'
-		//element+=(DeprecatedAttribute | DeprecatedObject | Object)*)
+		//name=XID  ( description=EString )?
+		//   ( '[' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )* ']'
+		//   | ':' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+		//   )
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//name=XID
@@ -2328,26 +2583,27 @@
 		//XID
 		public RuleCall getNameXIDParserRuleCall_1_0_0() { return cNameXIDParserRuleCall_1_0_0; }
 		
-		//description=EString?
+		//( description=EString )?
 		public Assignment getDescriptionAssignment_1_1() { return cDescriptionAssignment_1_1; }
 		
 		//EString
 		public RuleCall getDescriptionEStringParserRuleCall_1_1_0() { return cDescriptionEStringParserRuleCall_1_1_0; }
 		
-		//('[' element+=(DeprecatedAttribute | DeprecatedObject | Object)* ']' | ':' element+=(DeprecatedAttribute |
-		//DeprecatedObject | Object)*)
+		//( '[' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )* ']'
+		//| ':' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+		//)
 		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }
 		
-		//'[' element+=(DeprecatedAttribute | DeprecatedObject | Object)* ']'
+		//'[' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )* ']'
 		public Group getGroup_1_2_0() { return cGroup_1_2_0; }
 		
 		//'['
 		public Keyword getLeftSquareBracketKeyword_1_2_0_0() { return cLeftSquareBracketKeyword_1_2_0_0; }
 		
-		//element+=(DeprecatedAttribute | DeprecatedObject | Object)*
+		//( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
 		public Assignment getElementAssignment_1_2_0_1() { return cElementAssignment_1_2_0_1; }
 		
-		//(DeprecatedAttribute | DeprecatedObject | Object)
+		//( DeprecatedAttribute | DeprecatedObject | Object )
 		public Alternatives getElementAlternatives_1_2_0_1_0() { return cElementAlternatives_1_2_0_1_0; }
 		
 		//DeprecatedAttribute
@@ -2362,16 +2618,16 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_1_2_0_2() { return cRightSquareBracketKeyword_1_2_0_2; }
 		
-		//':' element+=(DeprecatedAttribute | DeprecatedObject | Object)*
+		//':' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
 		public Group getGroup_1_2_1() { return cGroup_1_2_1; }
 		
 		//':'
 		public Keyword getColonKeyword_1_2_1_0() { return cColonKeyword_1_2_1_0; }
 		
-		//element+=(DeprecatedAttribute | DeprecatedObject | Object)*
+		//( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
 		public Assignment getElementAssignment_1_2_1_1() { return cElementAssignment_1_2_1_1; }
 		
-		//(DeprecatedAttribute | DeprecatedObject | Object)
+		//( DeprecatedAttribute | DeprecatedObject | Object )
 		public Alternatives getElementAlternatives_1_2_1_1_0() { return cElementAlternatives_1_2_1_1_0; }
 		
 		//DeprecatedAttribute
@@ -2394,11 +2650,14 @@
 		private final RuleCall cValueValueSpecificationParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
 		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//DeprecatedAttribute sew::WAttribute:
-		//	{sew::WAttribute} name=DeprecatedAttributeID '=' value=ValueSpecification ';'?;
+		//DeprecatedAttribute returns sew::WAttribute
+		//: {sew::WAttribute}
+		//    name=DeprecatedAttributeID  '='  value=ValueSpecification  ( ';' )?
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{sew::WAttribute} name=DeprecatedAttributeID '=' value=ValueSpecification ';'?
+		//{sew::WAttribute}
+		//   name=DeprecatedAttributeID  '='  value=ValueSpecification  ( ';' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{sew::WAttribute}
@@ -2419,7 +2678,7 @@
 		//ValueSpecification
 		public RuleCall getValueValueSpecificationParserRuleCall_3_0() { return cValueValueSpecificationParserRuleCall_3_0; }
 		
-		//';'?
+		//( ';' )?
 		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
 	}
 	public class DeprecatedAttributeIDElements extends AbstractParserRuleElementFinder {
@@ -2428,12 +2687,14 @@
 		private final RuleCall cXIDParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cAT_IDENTIFIERTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//DeprecatedAttributeID:
-		//	XID
-		//	| AT_IDENTIFIER;
+		//DeprecatedAttributeID
+		//: XID
+		//| AT_IDENTIFIER
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//XID | AT_IDENTIFIER
+		// XID
+		//| AT_IDENTIFIER
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//XID
@@ -2455,14 +2716,20 @@
 		private final RuleCall cOperandValueSpecificationParserRuleCall_3_0 = (RuleCall)cOperandAssignment_3.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//DeprecatedExpression sew::WValueSpecification:
-		//	{expression::Expression}
-		//	'${'
-		//	operator=('|;|' | '|i|') operand+=ValueSpecification*
-		//	'}';
+		//DeprecatedExpression returns sew::WValueSpecification
+		//: {expression::Expression}
+		//    '${'
+		//        operator=( '|;|' | '|i|' )
+		//        ( operand+=ValueSpecification )*
+		//    '}'
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{expression::Expression} '${' operator=('|;|' | '|i|') operand+=ValueSpecification* '}'
+		//{expression::Expression}
+		//   '${'
+		//       operator=( '|;|' | '|i|' )
+		//       ( operand+=ValueSpecification )*
+		//   '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{expression::Expression}
@@ -2471,10 +2738,10 @@
 		//'${'
 		public Keyword getDollarSignLeftCurlyBracketKeyword_1() { return cDollarSignLeftCurlyBracketKeyword_1; }
 		
-		//operator=('|;|' | '|i|')
+		//operator=( '|;|' | '|i|' )
 		public Assignment getOperatorAssignment_2() { return cOperatorAssignment_2; }
 		
-		//('|;|' | '|i|')
+		//( '|;|' | '|i|' )
 		public Alternatives getOperatorAlternatives_2_0() { return cOperatorAlternatives_2_0; }
 		
 		//'|;|'
@@ -2483,7 +2750,7 @@
 		//'|i|'
 		public Keyword getOperatorIKeyword_2_0_1() { return cOperatorIKeyword_2_0_1; }
 		
-		//operand+=ValueSpecification*
+		//( operand+=ValueSpecification )*
 		public Assignment getOperandAssignment_3() { return cOperandAssignment_3; }
 		
 		//ValueSpecification
@@ -2648,15 +2915,20 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Symbolic Execution Workflow Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//Workflow sew::SEWorkflow:
-	//	{sew::SEWorkflow} Prolog? (type=('workflow' | 'symbex-workflow') name=UFI? description=EString?
-	//	'{'
-	//	element+=(Object | Property)*
-	//	'}'
-	//	// for Xtext Embeded Editor
-	//	| element+=(Object | Property)*
-	//	// Deprecated Object as FAVM Workflow
-	//	| element+=DeprecatedObject);
+	//Workflow returns sew::SEWorkflow
+	//: {sew::SEWorkflow}
+	//    ( Prolog )?
+	//    ( type=( 'workflow' | 'symbex-workflow' )
+	//        ( name=UFI )?  ( description=EString )?
+	//        '{'
+	//            ( element+=( Object | Property ) )*
+	//        '}'
+	//    // for Xtext Embeded Editor
+	//    | ( element+=( Object | Property ) )*
+	//    // Deprecated Object as FAVM Workflow
+	//    | element+=DeprecatedObject
+	//    )
+	//;
 	public WorkflowElements getWorkflowAccess() {
 		return pWorkflow;
 	}
@@ -2665,8 +2937,11 @@
 		return getWorkflowAccess().getRule();
 	}
 	
-	//Prolog:
-	//	('@sew' | '@favm') '<' ('workflow' | 'sew') (',' 'version:'? EDouble | UFI | EString)? '>:';
+	//Prolog
+	//: ( '@sew' | '@favm' ) '<'
+	//    ( 'workflow' | 'sew' )
+	//    ( ',' ( 'version:' )?  EDouble | UFI | EString )? '>:'
+	//;
 	public PrologElements getPrologAccess() {
 		return pProlog;
 	}
@@ -2678,10 +2953,11 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// [ Qualified ] Identifier
 	//////////////////////////////////////////////////////////////////////////////////
-	//ReservedWord:
-	//	'workflow' | 'sew'
-	//	// Deprecated
-	//	| DeprecatedReservedWord;
+	// ReservedWord
+	//: 'workflow' | 'sew'
+	//// Deprecated
+	//| DeprecatedReservedWord
+	//;
 	public ReservedWordElements getReservedWordAccess() {
 		return pReservedWord;
 	}
@@ -2690,20 +2966,23 @@
 		return getReservedWordAccess().getRule();
 	}
 	
-	//terminal XIDENDIFIER:
-	//	('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '#')*;
+	//terminal XIDENDIFIER
+	//: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'#')*
+	//;
 	public TerminalRule getXIDENDIFIERRule() {
 		return tXIDENDIFIER;
 	}
 	
-	//terminal AT_IDENTIFIER:
-	//	'@' XIDENDIFIER;
+	//terminal AT_IDENTIFIER
+	//: '@' XIDENDIFIER
+	//;
 	public TerminalRule getAT_IDENTIFIERRule() {
 		return tAT_IDENTIFIER;
 	}
 	
-	//XID:
-	//	ReservedWord | XIDENDIFIER;
+	//XID returns ecore::EString
+	//: ReservedWord | XIDENDIFIER
+	//;
 	public XIDElements getXIDAccess() {
 		return pXID;
 	}
@@ -2712,8 +2991,9 @@
 		return getXIDAccess().getRule();
 	}
 	
-	//UFI:
-	//	XID (('::' | '.') XID)*;
+	//UFI returns ecore::EString
+	//: XID ( ( '::' | '.' ) XID )*
+	//;
 	public UFIElements getUFIAccess() {
 		return pUFI;
 	}
@@ -2725,15 +3005,18 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Object Configuration Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//Object sew::WObject:
-	//	{sew::WObject} type=UFI name=UFI? description=EString?
-	//	'{'
-	//	element+=(Object | Property)*
-	//	'}'
-	//	| {sew::WObject} name=UFI (':=' | '+:=') (type=UFI description=EString?)?
-	//	'{'
-	//	element+=(Object | Property)*
-	//	'}';
+	//Object returns sew::WObject
+	//: {sew::WObject}
+	//    type=UFI  ( name=UFI )?  ( description=EString )?
+	//    '{'
+	//        ( element+=( Object | Property ) )*
+	//    '}'
+	//| {sew::WObject}
+	//    name=UFI  ( ':=' | '+:=' )  ( type=UFI  ( description=EString )? )?
+	//    '{'
+	//        ( element+=( Object | Property ) )*
+	//    '}'
+	//;
 	public ObjectElements getObjectAccess() {
 		return pObject;
 	}
@@ -2745,9 +3028,10 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Property Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//Property sew::WProperty:
-	//	Section
-	//	| Attribute;
+	//Property returns sew::WProperty
+	//: Section
+	//| Attribute
+	//;
 	public PropertyElements getPropertyAccess() {
 		return pProperty;
 	}
@@ -2756,9 +3040,12 @@
 		return getPropertyAccess().getRule();
 	}
 	
-	//Section sew::WSection:
-	//	name=XID description=EString? ('[' element+=(Object | Attribute)* ']'
-	//	| ':' element+=(Object | Attribute)*);
+	//Section returns sew::WSection
+	//: name=XID  ( description=EString )?
+	//    ( '[' ( element+=( Object | Attribute ) )* ']'
+	//    | ':' ( element+=( Object | Attribute ) )*
+	//    )
+	//;
 	public SectionElements getSectionAccess() {
 		return pSection;
 	}
@@ -2767,8 +3054,10 @@
 		return getSectionAccess().getRule();
 	}
 	
-	//Attribute sew::WAttribute:
-	//	{sew::WAttribute} name=XID '=' value=ValueSpecification ';'?;
+	//Attribute returns sew::WAttribute
+	//: {sew::WAttribute}
+	//    name=XID  '='  value=ValueSpecification  ( ';' )?
+	//;
 	public AttributeElements getAttributeAccess() {
 		return pAttribute;
 	}
@@ -2780,8 +3069,9 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Value Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//ValueSpecification sew::WValueSpecification:
-	//	Expression;
+	//ValueSpecification returns sew::WValueSpecification
+	//: Expression
+	//;
 	public ValueSpecificationElements getValueSpecificationAccess() {
 		return pValueSpecification;
 	}
@@ -2793,10 +3083,11 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Expression Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//Expression sew::WValueSpecification:
-	//	conditionalExpression
-	//	// Deprecated
-	//	| DeprecatedExpression;
+	//Expression returns sew::WValueSpecification
+	//: conditionalExpression
+	//// Deprecated
+	//| DeprecatedExpression
+	//;
 	public ExpressionElements getExpressionAccess() {
 		return pExpression;
 	}
@@ -2805,9 +3096,12 @@
 		return getExpressionAccess().getRule();
 	}
 	
-	//conditionalExpression sew::WValueSpecification:
-	//	conditionalOrExpression ({expression::Expression.operand+=current} operator='?' operand+=Expression ':'
-	//	operand+=Expression)?;
+	//conditionalExpression returns sew::WValueSpecification
+	//: conditionalOrExpression
+	//    ( {expression::Expression.operand+=current}
+	//        operator='?' operand+=Expression ':' operand+=Expression
+	//    )?
+	//;
 	public ConditionalExpressionElements getConditionalExpressionAccess() {
 		return pConditionalExpression;
 	}
@@ -2816,9 +3110,13 @@
 		return getConditionalExpressionAccess().getRule();
 	}
 	
-	//conditionalOrExpression sew::WValueSpecification:
-	//	conditionalAndExpression ({expression::Expression.operand+=current} operator=('||' | 'or')
-	//	operand+=conditionalAndExpression (('||' | 'or') operand+=conditionalAndExpression)*)?;
+	//conditionalOrExpression returns sew::WValueSpecification
+	//: conditionalAndExpression
+	//    ( {expression::Expression.operand+=current}
+	//        operator=( '||' | 'or' ) operand+=conditionalAndExpression
+	//        ( ( '||' | 'or' ) operand+=conditionalAndExpression )*
+	//    )?
+	//;
 	public ConditionalOrExpressionElements getConditionalOrExpressionAccess() {
 		return pConditionalOrExpression;
 	}
@@ -2827,9 +3125,13 @@
 		return getConditionalOrExpressionAccess().getRule();
 	}
 	
-	//conditionalAndExpression sew::WValueSpecification:
-	//	equalityExpression ({expression::Expression.operand+=current} operator=('&&' | 'and') operand+=equalityExpression
-	//	(('&&' | 'and') operand+=equalityExpression)*)?;
+	//conditionalAndExpression returns sew::WValueSpecification
+	//: equalityExpression
+	//    ( {expression::Expression.operand+=current}
+	//        operator=( '&&' | 'and' ) operand+=equalityExpression
+	//        ( ( '&&' | 'and' ) operand+=equalityExpression )*
+	//    )?
+	//;
 	public ConditionalAndExpressionElements getConditionalAndExpressionAccess() {
 		return pConditionalAndExpression;
 	}
@@ -2838,9 +3140,13 @@
 		return getConditionalAndExpressionAccess().getRule();
 	}
 	
-	//equalityExpression sew::WValueSpecification:
-	//	relationalExpression ({expression::Expression.operand+=current} operator=('==' | '!=' | '===' | '=!=' | '=/=')
-	//	operand+=relationalExpression)?;
+	//equalityExpression returns sew::WValueSpecification
+	//: relationalExpression
+	//    ( {expression::Expression.operand+=current}
+	//        operator=( '==' | '!=' | '===' | '=!=' | '=/=' )
+	//        operand+=relationalExpression
+	//    )?
+	//;
 	public EqualityExpressionElements getEqualityExpressionAccess() {
 		return pEqualityExpression;
 	}
@@ -2849,9 +3155,13 @@
 		return getEqualityExpressionAccess().getRule();
 	}
 	
-	//relationalExpression sew::WValueSpecification:
-	//	additiveExpression ({expression::Expression.operand+=current} operator=('<' | '<=' | '>' | '>=')
-	//	operand+=additiveExpression)?;
+	//relationalExpression returns sew::WValueSpecification
+	//: additiveExpression
+	//    ( {expression::Expression.operand+=current}
+	//        operator=( '<' | '<=' | '>' | '>=' )
+	//        operand+=additiveExpression
+	//    )?
+	//;
 	public RelationalExpressionElements getRelationalExpressionAccess() {
 		return pRelationalExpression;
 	}
@@ -2860,9 +3170,16 @@
 		return getRelationalExpressionAccess().getRule();
 	}
 	
-	//additiveExpression sew::WValueSpecification:
-	//	multiplicativeExpression ({expression::Expression.operand+=current} operator='+' operand+=multiplicativeExpression
-	//	('+' operand+=multiplicativeExpression)*)?;
+	//additiveExpression returns sew::WValueSpecification
+	//: multiplicativeExpression
+	//    ( ( {expression::Expression.operand+=current}
+	//        operator='+' operand+=multiplicativeExpression
+	//        ( '+' operand+=multiplicativeExpression )* )
+	////    | ( {expression::Expression.operand+=current}
+	////        operator='-' operand+=multiplicativeExpression
+	////        ( '-' operand+=multiplicativeExpression )* )
+	//    )?
+	//;
 	public AdditiveExpressionElements getAdditiveExpressionAccess() {
 		return pAdditiveExpression;
 	}
@@ -2871,12 +3188,22 @@
 		return getAdditiveExpressionAccess().getRule();
 	}
 	
-	//multiplicativeExpression sew::WValueSpecification:
-	//	primaryExpression ({expression::Expression.operand+=current} operator='*' operand+=primaryExpression ('*'
-	//	operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='**' operand+=primaryExpression
-	//	('**' operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='/' operand+=primaryExpression
-	//	('/' operand+=primaryExpression)* | {expression::Expression.operand+=current} operator='%' operand+=primaryExpression
-	//	('%' operand+=primaryExpression)*)?;
+	//multiplicativeExpression returns sew::WValueSpecification
+	//: primaryExpression
+	//    ( ( {expression::Expression.operand+=current}
+	//        operator='*' operand+=primaryExpression
+	//        ( '*' operand+=primaryExpression )* )
+	//    | ( {expression::Expression.operand+=current}
+	//        operator='**' operand+=primaryExpression
+	//        ( '**' operand+=primaryExpression )* )
+	//    | ( {expression::Expression.operand+=current}
+	//        operator='/' operand+=primaryExpression
+	//        ( '/' operand+=primaryExpression )* )
+	//    | ( {expression::Expression.operand+=current}
+	//        operator='%' operand+=primaryExpression
+	//        ( '%' operand+=primaryExpression )* )
+	//    )?
+	//;
 	public MultiplicativeExpressionElements getMultiplicativeExpressionAccess() {
 		return pMultiplicativeExpression;
 	}
@@ -2885,11 +3212,13 @@
 		return getMultiplicativeExpressionAccess().getRule();
 	}
 	
-	//primaryExpression sew::WValueSpecification:
-	//	'+' primaryExpression
-	//	| {expression::Expression} (operator='-' operand+=primaryExpression) | {expression::Expression} (operator=('!' |
-	//	'not') operand+=primaryExpression) | '(' Expression ')'
-	//	| LiteralExpression;
+	//primaryExpression returns sew::WValueSpecification
+	//: '+' primaryExpression
+	//| { expression::Expression }( operator='-' operand+=primaryExpression )
+	//| { expression::Expression }( operator=( '!' | 'not' ) operand+=primaryExpression )
+	//| '(' Expression ')'
+	//| LiteralExpression
+	//;
 	public PrimaryExpressionElements getPrimaryExpressionAccess() {
 		return pPrimaryExpression;
 	}
@@ -2898,19 +3227,20 @@
 		return getPrimaryExpressionAccess().getRule();
 	}
 	
-	//LiteralExpression sew::WValueSpecification:
-	//	LiteralBooleanValue
-	//	| LiteralCharacterValue
-	//	| LiteralIntegerValue
-	//	| LiteralRationalValue
-	//	| LiteralFloatValue
-	//	//| LiteralRealValue
-	//	| LiteralStringValue
-	//	| LiteralNullValue
-	//	| LiteralArrayValue
-	//	| LiteralObjectReference
-	//	| LiteralVariableReference
-	//	| LiteralInstanceReference;
+	//LiteralExpression returns sew::WValueSpecification
+	//: LiteralBooleanValue
+	//| LiteralCharacterValue
+	//| LiteralIntegerValue
+	//| LiteralRationalValue
+	//| LiteralFloatValue
+	////| LiteralRealValue
+	//| LiteralStringValue
+	//| LiteralNullValue
+	//| LiteralArrayValue
+	//| LiteralObjectReference
+	//| LiteralVariableReference
+	//| LiteralInstanceReference
+	//;
 	public LiteralExpressionElements getLiteralExpressionAccess() {
 		return pLiteralExpression;
 	}
@@ -2922,10 +3252,14 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Array of Literal Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralArrayValue expression::LiteralArrayValue:
-	//	{expression::LiteralArrayValue}
-	//	'[' (values+=ValueSpecification (',' values+=ValueSpecification)*)?
-	//	']';
+	//LiteralArrayValue  returns expression::LiteralArrayValue
+	//: {expression::LiteralArrayValue}
+	//    '['
+	//        ( values+=ValueSpecification
+	//            ( ',' values+=ValueSpecification )*
+	//        )?
+	//    ']'
+	//;
 	public LiteralArrayValueElements getLiteralArrayValueAccess() {
 		return pLiteralArrayValue;
 	}
@@ -2937,8 +3271,9 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Object Reference Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralObjectReference expression::LiteralObjectReference:
-	//	'&'? (object=[sew::WObject|UFI] | symbol=UFI);
+	//LiteralObjectReference returns expression::LiteralObjectReference
+	//: ( '&' )? ( object=[sew::WObject|UFI] | symbol=UFI )
+	//;
 	public LiteralObjectReferenceElements getLiteralObjectReferenceAccess() {
 		return pLiteralObjectReference;
 	}
@@ -2950,8 +3285,9 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralBooleanValue expression::LiteralBooleanValue:
-	//	value=EBoolean;
+	//LiteralBooleanValue  returns expression::LiteralBooleanValue
+	//: value=EBoolean
+	//;
 	public LiteralBooleanValueElements getLiteralBooleanValueAccess() {
 		return pLiteralBooleanValue;
 	}
@@ -2960,8 +3296,9 @@
 		return getLiteralBooleanValueAccess().getRule();
 	}
 	
-	//LiteralCharacterValue expression::LiteralCharacterValue:
-	//	value=EChar;
+	//LiteralCharacterValue  returns expression::LiteralCharacterValue
+	//: value=EChar
+	//;
 	public LiteralCharacterValueElements getLiteralCharacterValueAccess() {
 		return pLiteralCharacterValue;
 	}
@@ -2970,8 +3307,9 @@
 		return getLiteralCharacterValueAccess().getRule();
 	}
 	
-	//LiteralIntegerValue expression::LiteralIntegerValue:
-	//	value=ELong;
+	//LiteralIntegerValue  returns expression::LiteralIntegerValue
+	//: value=ELong
+	//;
 	public LiteralIntegerValueElements getLiteralIntegerValueAccess() {
 		return pLiteralIntegerValue;
 	}
@@ -2980,8 +3318,9 @@
 		return getLiteralIntegerValueAccess().getRule();
 	}
 	
-	//LiteralRationalValue expression::LiteralRationalValue:
-	//	numerator=ELong '/' denominator=ELong;
+	//LiteralRationalValue  returns expression::LiteralRationalValue
+	//: numerator=ELong '/' denominator=ELong
+	//;
 	public LiteralRationalValueElements getLiteralRationalValueAccess() {
 		return pLiteralRationalValue;
 	}
@@ -2990,8 +3329,9 @@
 		return getLiteralRationalValueAccess().getRule();
 	}
 	
-	//LiteralFloatValue expression::LiteralFloatValue:
-	//	value=EDouble;
+	//LiteralFloatValue  returns expression::LiteralFloatValue
+	//: value=EDouble
+	//;
 	public LiteralFloatValueElements getLiteralFloatValueAccess() {
 		return pLiteralFloatValue;
 	}
@@ -3000,8 +3340,9 @@
 		return getLiteralFloatValueAccess().getRule();
 	}
 	
-	//LiteralRealValue expression::LiteralRealValue:
-	//	value=EBigDecimal;
+	//LiteralRealValue  returns expression::LiteralRealValue
+	//: value=EBigDecimal
+	//;
 	public LiteralRealValueElements getLiteralRealValueAccess() {
 		return pLiteralRealValue;
 	}
@@ -3010,8 +3351,9 @@
 		return getLiteralRealValueAccess().getRule();
 	}
 	
-	//LiteralStringValue expression::LiteralStringValue:
-	//	value=EString;
+	//LiteralStringValue  returns expression::LiteralStringValue
+	//: value=EString
+	//;
 	public LiteralStringValueElements getLiteralStringValueAccess() {
 		return pLiteralStringValue;
 	}
@@ -3020,9 +3362,10 @@
 		return getLiteralStringValueAccess().getRule();
 	}
 	
-	//LiteralNullValue expression::LiteralNullValue:
-	//	{expression::LiteralNullValue}
-	//	'null' ('<' type=XID '>')?;
+	//LiteralNullValue  returns expression::LiteralNullValue
+	//: {expression::LiteralNullValue}
+	//    'null' ( '<' type=XID '>' )?
+	//;
 	public LiteralNullValueElements getLiteralNullValueAccess() {
 		return pLiteralNullValue;
 	}
@@ -3031,9 +3374,10 @@
 		return getLiteralNullValueAccess().getRule();
 	}
 	
-	//LiteralVariableReference expression::LiteralReferenceValue:
-	//	LiteralTimeVariable
-	//	| LiteralTimeDeltaVariable;
+	//LiteralVariableReference returns expression::LiteralReferenceValue
+	//: LiteralTimeVariable
+	//| LiteralTimeDeltaVariable
+	//;
 	public LiteralVariableReferenceElements getLiteralVariableReferenceAccess() {
 		return pLiteralVariableReference;
 	}
@@ -3042,8 +3386,9 @@
 		return getLiteralVariableReferenceAccess().getRule();
 	}
 	
-	//LiteralTimeVariable expression::LiteralTimeVariable:
-	//	{expression::LiteralTimeVariable} symbol='$time';
+	//LiteralTimeVariable returns expression::LiteralTimeVariable
+	//    : {expression::LiteralTimeVariable} ( symbol='$time' )
+	//    ;
 	public LiteralTimeVariableElements getLiteralTimeVariableAccess() {
 		return pLiteralTimeVariable;
 	}
@@ -3052,8 +3397,9 @@
 		return getLiteralTimeVariableAccess().getRule();
 	}
 	
-	//LiteralTimeDeltaVariable expression::LiteralTimeDeltaVariable:
-	//	{expression::LiteralTimeDeltaVariable} symbol='$delta';
+	//LiteralTimeDeltaVariable returns expression::LiteralTimeDeltaVariable
+	//    : {expression::LiteralTimeDeltaVariable} ( symbol='$delta' )
+	//    ;
 	public LiteralTimeDeltaVariableElements getLiteralTimeDeltaVariableAccess() {
 		return pLiteralTimeDeltaVariable;
 	}
@@ -3062,13 +3408,14 @@
 		return getLiteralTimeDeltaVariableAccess().getRule();
 	}
 	
-	//LiteralInstanceReference expression::LiteralReferenceValue:
-	//	LiteralThisInstance
-	//	| LiteralSelfInstance
-	//	| LiteralParentInstance
-	//	| LiteralSuperInstance
-	//	| LiteralSystemInstance
-	//	| LiteralEnvInstance;
+	//LiteralInstanceReference returns expression::LiteralReferenceValue
+	//: LiteralThisInstance
+	//| LiteralSelfInstance
+	//| LiteralParentInstance
+	//| LiteralSuperInstance
+	//| LiteralSystemInstance
+	//| LiteralEnvInstance
+	//;
 	public LiteralInstanceReferenceElements getLiteralInstanceReferenceAccess() {
 		return pLiteralInstanceReference;
 	}
@@ -3077,8 +3424,9 @@
 		return getLiteralInstanceReferenceAccess().getRule();
 	}
 	
-	//LiteralThisInstance expression::LiteralThisInstance:
-	//	{expression::LiteralThisInstance} symbol='$this';
+	//LiteralThisInstance returns expression::LiteralThisInstance
+	//: {expression::LiteralThisInstance} ( symbol='$this' )
+	//;
 	public LiteralThisInstanceElements getLiteralThisInstanceAccess() {
 		return pLiteralThisInstance;
 	}
@@ -3087,8 +3435,9 @@
 		return getLiteralThisInstanceAccess().getRule();
 	}
 	
-	//LiteralSelfInstance expression::LiteralSelfInstance:
-	//	{expression::LiteralSelfInstance} symbol='$self';
+	//LiteralSelfInstance returns expression::LiteralSelfInstance
+	//: {expression::LiteralSelfInstance} ( symbol='$self' )
+	//;
 	public LiteralSelfInstanceElements getLiteralSelfInstanceAccess() {
 		return pLiteralSelfInstance;
 	}
@@ -3097,8 +3446,9 @@
 		return getLiteralSelfInstanceAccess().getRule();
 	}
 	
-	//LiteralParentInstance expression::LiteralParentInstance:
-	//	{expression::LiteralParentInstance} symbol='$parent';
+	//LiteralParentInstance returns expression::LiteralParentInstance
+	//: {expression::LiteralParentInstance} ( symbol='$parent' )
+	//;
 	public LiteralParentInstanceElements getLiteralParentInstanceAccess() {
 		return pLiteralParentInstance;
 	}
@@ -3107,8 +3457,9 @@
 		return getLiteralParentInstanceAccess().getRule();
 	}
 	
-	//LiteralSuperInstance expression::LiteralSuperInstance:
-	//	{expression::LiteralSuperInstance} symbol='$super';
+	//LiteralSuperInstance returns expression::LiteralSuperInstance
+	//: {expression::LiteralSuperInstance} ( symbol='$super' )
+	//;
 	public LiteralSuperInstanceElements getLiteralSuperInstanceAccess() {
 		return pLiteralSuperInstance;
 	}
@@ -3117,8 +3468,9 @@
 		return getLiteralSuperInstanceAccess().getRule();
 	}
 	
-	//LiteralSystemInstance expression::LiteralSystemInstance:
-	//	{expression::LiteralSystemInstance} symbol='$system';
+	//LiteralSystemInstance returns expression::LiteralSystemInstance
+	//: {expression::LiteralSystemInstance} ( symbol='$system' )
+	//;
 	public LiteralSystemInstanceElements getLiteralSystemInstanceAccess() {
 		return pLiteralSystemInstance;
 	}
@@ -3127,8 +3479,9 @@
 		return getLiteralSystemInstanceAccess().getRule();
 	}
 	
-	//LiteralEnvInstance expression::LiteralEnvInstance:
-	//	{expression::LiteralEnvInstance} symbol=('$env' | 'env');
+	//LiteralEnvInstance returns expression::LiteralEnvInstance
+	//: {expression::LiteralEnvInstance} symbol=( '$env' | 'env' )
+	//;
 	public LiteralEnvInstanceElements getLiteralEnvInstanceAccess() {
 		return pLiteralEnvInstance;
 	}
@@ -3140,9 +3493,10 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Terminal Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//EBoolean ecore::EBoolean:
-	//	'true'
-	//	| 'false';
+	//EBoolean returns ecore::EBoolean
+	//: 'true'
+	//| 'false'
+	//;
 	public EBooleanElements getEBooleanAccess() {
 		return pEBoolean;
 	}
@@ -3151,14 +3505,16 @@
 		return getEBooleanAccess().getRule();
 	}
 	
-	//terminal CHARACTER:
-	//	"'" . "'";
+	//terminal CHARACTER
+	//: "'" . "'"
+	//;
 	public TerminalRule getCHARACTERRule() {
 		return tCHARACTER;
 	}
 	
-	//EChar ecore::EChar:
-	//	CHARACTER;
+	//EChar returns ecore::EChar
+	//: CHARACTER
+	//;
 	public ECharElements getECharAccess() {
 		return pEChar;
 	}
@@ -3167,8 +3523,8 @@
 		return getECharAccess().getRule();
 	}
 	
-	//ELong ecore::ELong:
-	//	'-'? INT;
+	//ELong returns ecore::ELong:
+	//    '-'? INT;
 	public ELongElements getELongAccess() {
 		return pELong;
 	}
@@ -3177,8 +3533,8 @@
 		return getELongAccess().getRule();
 	}
 	
-	//EDouble ecore::EDouble:
-	//	'-'? INT? '.' INT //(('E'|'e') '-'? INT)?
+	//EDouble returns ecore::EDouble
+	//: '-'? INT? '.' INT //(('E'|'e') '-'? INT)?
 	//;
 	public EDoubleElements getEDoubleAccess() {
 		return pEDouble;
@@ -3188,8 +3544,9 @@
 		return getEDoubleAccess().getRule();
 	}
 	
-	//EBigDecimal ecore::EBigDecimal:
-	//	INT? '.' INT;
+	//EBigDecimal returns ecore::EBigDecimal
+	//: INT? '.' INT
+	//;
 	public EBigDecimalElements getEBigDecimalAccess() {
 		return pEBigDecimal;
 	}
@@ -3198,8 +3555,9 @@
 		return getEBigDecimalAccess().getRule();
 	}
 	
-	//EString:
-	//	STRING;
+	//EString returns ecore::EString
+	//: STRING
+	//;
 	public EStringElements getEStringAccess() {
 		return pEString;
 	}
@@ -3211,10 +3569,11 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// @DEPRECATED Diversity Configuration Specification
 	//////////////////////////////////////////////////////////////////////////////////
-	//DeprecatedReservedWord:
-	//	'form' | 'endform'
-	//	| 'prototype' | 'endprototype'
-	//	| 'section' | 'endsection';
+	//DeprecatedReservedWord
+	//: 'form'      | 'endform'
+	//| 'prototype' | 'endprototype'
+	//| 'section'   | 'endsection'
+	//;
 	public DeprecatedReservedWordElements getDeprecatedReservedWordAccess() {
 		return pDeprecatedReservedWord;
 	}
@@ -3223,17 +3582,18 @@
 		return getDeprecatedReservedWordAccess().getRule();
 	}
 	
-	//DeprecatedObject sew::WObject:
-	//	{sew::WObject}
-	//	'form'
-	//	name=UFI description=EString? 'as' '&'? type=UFI 'is'
-	//	element+=DeprecatedProperty*
-	//	'endform'
-	//	| {sew::WObject}
-	//	'prototype'
-	//	name=UFI description=EString? 'as' '&'? type=UFI 'is'
-	//	element+=DeprecatedProperty*
-	//	'endprototype';
+	//DeprecatedObject returns sew::WObject
+	//: {sew::WObject}
+	//    'form'
+	//        name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+	//        ( element+=DeprecatedProperty )*
+	//    'endform'
+	//| {sew::WObject}
+	//    'prototype'
+	//        name=UFI  ( description=EString )?  'as'  ( '&' )?  type=UFI  'is'
+	//        ( element+=DeprecatedProperty )*
+	//    'endprototype'
+	//;
 	public DeprecatedObjectElements getDeprecatedObjectAccess() {
 		return pDeprecatedObject;
 	}
@@ -3242,9 +3602,10 @@
 		return getDeprecatedObjectAccess().getRule();
 	}
 	
-	//DeprecatedProperty sew::WProperty:
-	//	DeprecatedSection
-	//	| DeprecatedAttribute;
+	//DeprecatedProperty returns sew::WProperty
+	//: DeprecatedSection
+	//| DeprecatedAttribute
+	//;
 	public DeprecatedPropertyElements getDeprecatedPropertyAccess() {
 		return pDeprecatedProperty;
 	}
@@ -3253,14 +3614,17 @@
 		return getDeprecatedPropertyAccess().getRule();
 	}
 	
-	//DeprecatedSection sew::WSection:
-	//	{sew::WSection}
-	//	'section' name=XID
-	//	//		( element+=( Object | Attribute  ) )*
-	//	element+=(DeprecatedAttribute | DeprecatedObject | Object)*
-	//	'endsection' XID?
-	//	| name=XID description=EString? ('[' element+=(DeprecatedAttribute | DeprecatedObject | Object)* ']'
-	//	| ':' element+=(DeprecatedAttribute | DeprecatedObject | Object)*);
+	//DeprecatedSection returns sew::WSection
+	//: {sew::WSection}
+	//    'section'  name=XID
+	////        ( element+=( Object | Attribute  ) )*
+	//        ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+	//    'endsection'  ( XID )?
+	//| name=XID  ( description=EString )?
+	//    ( '[' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )* ']'
+	//    | ':' ( element+=( DeprecatedAttribute | DeprecatedObject | Object ) )*
+	//    )
+	//;
 	public DeprecatedSectionElements getDeprecatedSectionAccess() {
 		return pDeprecatedSection;
 	}
@@ -3269,8 +3633,10 @@
 		return getDeprecatedSectionAccess().getRule();
 	}
 	
-	//DeprecatedAttribute sew::WAttribute:
-	//	{sew::WAttribute} name=DeprecatedAttributeID '=' value=ValueSpecification ';'?;
+	//DeprecatedAttribute returns sew::WAttribute
+	//: {sew::WAttribute}
+	//    name=DeprecatedAttributeID  '='  value=ValueSpecification  ( ';' )?
+	//;
 	public DeprecatedAttributeElements getDeprecatedAttributeAccess() {
 		return pDeprecatedAttribute;
 	}
@@ -3279,9 +3645,10 @@
 		return getDeprecatedAttributeAccess().getRule();
 	}
 	
-	//DeprecatedAttributeID:
-	//	XID
-	//	| AT_IDENTIFIER;
+	//DeprecatedAttributeID
+	//: XID
+	//| AT_IDENTIFIER
+	//;
 	public DeprecatedAttributeIDElements getDeprecatedAttributeIDAccess() {
 		return pDeprecatedAttributeID;
 	}
@@ -3290,11 +3657,13 @@
 		return getDeprecatedAttributeIDAccess().getRule();
 	}
 	
-	//DeprecatedExpression sew::WValueSpecification:
-	//	{expression::Expression}
-	//	'${'
-	//	operator=('|;|' | '|i|') operand+=ValueSpecification*
-	//	'}';
+	//DeprecatedExpression returns sew::WValueSpecification
+	//: {expression::Expression}
+	//    '${'
+	//        operator=( '|;|' | '|i|' )
+	//        ( operand+=ValueSpecification )*
+	//    '}'
+	//;
 	public DeprecatedExpressionElements getDeprecatedExpressionAccess() {
 		return pDeprecatedExpression;
 	}
@@ -3303,45 +3672,40 @@
 		return getDeprecatedExpressionAccess().getRule();
 	}
 	
-	//terminal ID:
-	//	'^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*;
+	//terminal ID: '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
 	public TerminalRule getIDRule() {
 		return gaTerminals.getIDRule();
 	}
 	
-	//terminal INT returns ecore::EInt:
-	//	'0'..'9'+;
+	//terminal INT returns ecore::EInt: ('0'..'9')+;
 	public TerminalRule getINTRule() {
 		return gaTerminals.getINTRule();
 	}
 	
 	//terminal STRING:
-	//	'"' ('\\' . | !('\\' | '"'))* '"' |
-	//	"'" ('\\' . | !('\\' | "'"))* "'";
+	//            '"' ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|'"') )* '"' |
+	//            "'" ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|"'") )* "'"
+	//        ;
 	public TerminalRule getSTRINGRule() {
 		return gaTerminals.getSTRINGRule();
 	}
 	
-	//terminal ML_COMMENT:
-	//	'/*'->'*/';
+	//terminal ML_COMMENT : '/*' -> '*/';
 	public TerminalRule getML_COMMENTRule() {
 		return gaTerminals.getML_COMMENTRule();
 	}
 	
-	//terminal SL_COMMENT:
-	//	'//' !('\n' | '\r')* ('\r'? '\n')?;
+	//terminal SL_COMMENT : '//' !('\n'|'\r')* ('\r'? '\n')?;
 	public TerminalRule getSL_COMMENTRule() {
 		return gaTerminals.getSL_COMMENTRule();
 	}
 	
-	//terminal WS:
-	//	' ' | '\t' | '\r' | '\n'+;
+	//terminal WS         : (' '|'\t'|'\r'|'\n')+;
 	public TerminalRule getWSRule() {
 		return gaTerminals.getWSRule();
 	}
 	
-	//terminal ANY_OTHER:
-	//	.;
+	//terminal ANY_OTHER: .;
 	public TerminalRule getANY_OTHERRule() {
 		return gaTerminals.getANY_OTHERRule();
 	}
diff --git a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/validation/AbstractSEWValidator.java b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/validation/AbstractSEWValidator.java
index 6324d4f..9d74920 100644
--- a/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/validation/AbstractSEWValidator.java
+++ b/editor/sew/org.eclipse.efm.sew.xtext/src-gen/org/eclipse/efm/sew/xtext/validation/AbstractSEWValidator.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.sew.xtext.validation;
 
diff --git a/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ide/META-INF/MANIFEST.MF b/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ide/META-INF/MANIFEST.MF
index 5c000a3..475d0f1 100644
--- a/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ide/META-INF/MANIFEST.MF
+++ b/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ide/META-INF/MANIFEST.MF
@@ -8,7 +8,7 @@
 Require-Bundle: org.eclipse.efm.papyrus.xtext.transition,

  org.eclipse.xtext.ide,

  org.eclipse.xtext.xbase.ide

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.papyrus.xtext.ide.contentassist.antlr,

  org.eclipse.efm.papyrus.xtext.ide.contentassist.antlr.internal

 

diff --git a/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ui/META-INF/MANIFEST.MF b/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ui/META-INF/MANIFEST.MF
index 955150b..689539a 100644
--- a/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ui/META-INF/MANIFEST.MF
+++ b/editor/transition/org.eclipse.efm.papyrus.xtext.transition.ui/META-INF/MANIFEST.MF
@@ -23,9 +23,14 @@
  org.eclipse.papyrus.infra.emf,

  org.eclipse.papyrus.infra.core;bundle-version="1.1.3",

  org.eclipse.efm.formalml;bundle-version="[0.0.1,1.0.0)",

- org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors

-Import-Package: org.apache.log4j

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+ org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors,

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

+ org.eclipse.emf.transaction,

+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.9.0"

+Import-Package: org.apache.log4j,

+ org.eclipse.emf.workspace,

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

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.papyrus.xtext.ui.quickfix,

  org.eclipse.efm.papyrus.xtext.transition.ui.internal,

  org.eclipse.efm.papyrus.xtext.ui.contentassist

diff --git a/editor/transition/org.eclipse.efm.papyrus.xtext.transition/META-INF/MANIFEST.MF b/editor/transition/org.eclipse.efm.papyrus.xtext.transition/META-INF/MANIFEST.MF
index 26b41ea..352d69d 100644
--- a/editor/transition/org.eclipse.efm.papyrus.xtext.transition/META-INF/MANIFEST.MF
+++ b/editor/transition/org.eclipse.efm.papyrus.xtext.transition/META-INF/MANIFEST.MF
@@ -16,7 +16,7 @@
  org.eclipse.xtext.util,

  org.eclipse.xtend.lib,

  org.eclipse.emf.common

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.papyrus.xtext.transition,

  org.eclipse.efm.papyrus.xtext.services,

  org.eclipse.efm.papyrus.xtext.transition.util,

diff --git a/editor/xlia/org.eclipse.efm.formalml.ecore/.classpath b/editor/xlia/org.eclipse.efm.formalml.ecore/.classpath
index 3cab749..26abbfa 100644
--- a/editor/xlia/org.eclipse.efm.formalml.ecore/.classpath
+++ b/editor/xlia/org.eclipse.efm.formalml.ecore/.classpath
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <classpath>

-	<classpathentry kind="src" path="ecore-gen"/>

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

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

 		<attributes>

 			<attribute name="module" value="true"/>

 		</attributes>

 	</classpathentry>

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

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

-	<classpathentry kind="src" path="xtend-gen"/>

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

+	<classpathentry kind="src" path="ecore-gen/"/>

+	<classpathentry kind="src" path="xtend-gen/"/>

 	<classpathentry kind="output" path="target/classes"/>

 </classpath>

diff --git a/editor/xlia/org.eclipse.efm.formalml.ecore/.settings/org.eclipse.jdt.core.prefs b/editor/xlia/org.eclipse.efm.formalml.ecore/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/xlia/org.eclipse.efm.formalml.ecore/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/xlia/org.eclipse.efm.formalml.ecore/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/xlia/org.eclipse.efm.formalml.ecore/META-INF/MANIFEST.MF b/editor/xlia/org.eclipse.efm.formalml.ecore/META-INF/MANIFEST.MF
index ecca70c..405d30c 100644
--- a/editor/xlia/org.eclipse.efm.formalml.ecore/META-INF/MANIFEST.MF
+++ b/editor/xlia/org.eclipse.efm.formalml.ecore/META-INF/MANIFEST.MF
@@ -16,7 +16,7 @@
  org.eclipse.xtend.lib,

  org.eclipse.xtend.lib.macro,

  org.eclipse.efm.formalml.ecore;visibility:=reexport

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.ecore.formalml.common,

  org.eclipse.efm.ecore.formalml.common.impl,

  org.eclipse.efm.ecore.formalml.common.util,

@@ -42,4 +42,3 @@
  org.eclipse.efm.formalml.ecore.factory

 Bundle-ActivationPolicy: lazy

 Automatic-Module-Name: org.eclipse.efm.formalml.ecore

-Import-Package: org.eclipse.jdt.internal.compiler.ast

diff --git a/editor/xlia/org.eclipse.efm.formalml.ecore/xtend-gen/org/eclipse/efm/formalml/ecore/factory/.XLIAGenerator.xtendbin b/editor/xlia/org.eclipse.efm.formalml.ecore/xtend-gen/org/eclipse/efm/formalml/ecore/factory/.XLIAGenerator.xtendbin
deleted file mode 100644
index 87ccabf..0000000
--- a/editor/xlia/org.eclipse.efm.formalml.ecore/xtend-gen/org/eclipse/efm/formalml/ecore/factory/.XLIAGenerator.xtendbin
+++ /dev/null
Binary files differ
diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/.classpath b/editor/xlia/org.eclipse.efm.formalml.plantuml/.classpath
new file mode 100644
index 0000000..e423b03
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry excluding="org/eclipse/efm/formalml/plantuml/SysMLDiagramTextProvider.java" kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/.project b/editor/xlia/org.eclipse.efm.formalml.plantuml/.project
new file mode 100644
index 0000000..b57a88a
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.efm.formalml.plantuml</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/editor/xlia/org.eclipse.efm.formalml.plantuml/.settings/org.eclipse.jdt.core.prefs b/editor/xlia/org.eclipse.efm.formalml.plantuml/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..bd1095b
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/META-INF/MANIFEST.MF b/editor/xlia/org.eclipse.efm.formalml.plantuml/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..28dbabf
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: FML to Plantuml
+Bundle-SymbolicName: org.eclipse.efm.formalml.plantuml;singleton:=true
+Bundle-Version: 0.0.1.qualifier
+Bundle-Activator: org.eclipse.efm.formalml.plantuml.Activator
+Bundle-Vendor: CEA-LIST
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.ui.navigator,
+ org.eclipse.core.resources
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.efm.formalml.plantuml
+Bundle-ActivationPolicy: lazy
+Import-Package: com.google.common.collect;version="30.1.0",
+ net.sourceforge.plantuml.eclipse.utils,
+ org.eclipse.core.resources,
+ org.eclipse.efm.ecore.formalml.infrastructure,
+ org.eclipse.efm.ecore.formalml.specification,
+ org.eclipse.efm.formalml.xtext.generator,
+ org.eclipse.emf.common.util,
+ org.eclipse.jface.text,
+ org.eclipse.ui.ide,
+ org.eclipse.ui.navigator.resources,
+ org.eclipse.ui.part,
+ org.eclipse.ui.texteditor,
+ org.eclipse.xtext.nodemodel,
+ org.eclipse.xtext.nodemodel.util,
+ org.eclipse.xtext.resource,
+ org.eclipse.xtext.ui.editor,
+ org.eclipse.xtext.ui.editor.model,
+ org.eclipse.xtext.util.concurrent
diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/about.html b/editor/xlia/org.eclipse.efm.formalml.plantuml/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/build.properties b/editor/xlia/org.eclipse.efm.formalml.plantuml/build.properties
new file mode 100644
index 0000000..6f20375
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/build.properties
@@ -0,0 +1,5 @@
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .,\

+               plugin.xml

diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/plugin.xml b/editor/xlia/org.eclipse.efm.formalml.plantuml/plugin.xml
new file mode 100644
index 0000000..bb115c5
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.4"?>

+<plugin>

+   <extension

+         point="net.sourceforge.plantuml.eclipse.diagramTextProvider">

+      <diagramTextProvider

+            id="org.eclipse.efm.formalml.plantuml.FormalMLDiagramTextProvider"

+            label="Diagrams generated from FormalML models"

+            priority="100"

+            providerClass="org.eclipse.efm.formalml.plantuml.FormalMLDiagramTextProvider">

+      </diagramTextProvider>

+   </extension>

+   <extension

+         point="net.sourceforge.plantuml.eclipse.linkOpener">

+      <linkOpener

+            linkOpenerClass="org.eclipse.efm.formalml.plantuml.FormalMLDiagramLinkOpener">

+      </linkOpener>

+   </extension>

+

+</plugin>

diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/pom.xml b/editor/xlia/org.eclipse.efm.formalml.plantuml/pom.xml
new file mode 100644
index 0000000..2089656
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.efm</groupId>
+		<artifactId>org.eclipse.efm.modeling.editor.xlia</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.efm.formalml.plantuml</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>org.eclipse.efm.formalml.plantuml</name>
+	<description>This plug-in contains PlantUML's extension for graphical xLIA model visualization.</description>
+</project>
\ No newline at end of file
diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/Activator.java b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/Activator.java
new file mode 100644
index 0000000..37bf885
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/Activator.java
@@ -0,0 +1,88 @@
+/*****************************************************************************

+* Copyright (c) 2021 CEA LIST.

+*

+* All rights reserved. This program and the accompanying materials

+* are made available under the terms of the Eclipse Public License v1.0

+* which accompanies this distribution, and is available at

+* http://www.eclipse.org/legal/epl-v10.html

+*

+* Contributors:

+*  Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr

+*  - Initial API and implementation

+*****************************************************************************/

+package org.eclipse.efm.formalml.plantuml;

+

+import java.util.Map;

+import java.util.UUID;

+

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

+import org.eclipse.ui.plugin.AbstractUIPlugin;

+import org.osgi.framework.BundleContext;

+

+import com.google.common.collect.BiMap;

+import com.google.common.collect.HashBiMap;

+

+/**

+ * 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.efm.formalml.plantuml"; //$NON-NLS-1$

+

+	// The shared instance

+	private static Activator plugin;

+

+	/**

+	 * The constructor

+	 */

+	public Activator() {

+	}

+

+	@Override

+	public void start(final BundleContext context) throws Exception {

+		super.start(context);

+		plugin = this;

+	}

+

+	@Override

+	public void stop(final BundleContext context) throws Exception {

+		plugin = null;

+		super.stop(context);

+	}

+

+	/**

+	 * Returns the shared instance

+	 *

+	 * @return the shared instance

+	 */

+	public static Activator getDefault() {

+		return plugin;

+	}

+

+

+    private final BiMap<UUID, EObject> elementsMap = HashBiMap.create();

+

+    private synchronized EObject get(final UUID uuid) {

+        return elementsMap.get(uuid);

+    }

+

+    private synchronized UUID register(final EObject eObj) {

+        final Map<EObject, UUID> map = elementsMap.inverse();

+        UUID uuid = map.get(eObj);

+        if (uuid != null) return uuid;

+        uuid = UUID.randomUUID();

+        elementsMap.put(uuid, eObj);

+        return uuid;

+    }

+

+    public static EObject findEObject(final UUID uuid) {

+        return getDefault().get(uuid);

+    }

+

+    public static UUID registerEObject(final EObject eObj) {

+        return getDefault().register(eObj);

+    }

+

+

+}

diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FML2PlantUMLText.java b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FML2PlantUMLText.java
new file mode 100644
index 0000000..d259d2f
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FML2PlantUMLText.java
@@ -0,0 +1,141 @@
+/*****************************************************************************
+* Copyright (c) 2021 CEA LIST.
+*
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*  Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr
+*  - Initial API and implementation
+*****************************************************************************/
+package org.eclipse.efm.formalml.plantuml;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.efm.ecore.formalml.infrastructure.Machine;
+import org.eclipse.efm.ecore.formalml.specification.XliaModel;
+import org.eclipse.efm.formalml.xtext.generator.FormalMLGenerator;
+import org.eclipse.emf.ecore.EObject;
+
+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;
+
+public class FML2PlantUMLText {
+
+	public final static String DEFAULT_PUML_TEXT =
+			PlantumlConstants.START_UML + "\n"
+					+ "\nIViewPart -> FML2PUML: FML Diagram Text Request"
+					+ "\nFML2PUML --> IViewPart: FML Diagram Text Response"
+					+ "\n\n" + PlantumlConstants.END_UML;
+
+
+	public final static String DEFAULT_PUML_FML_STYLE_HEADER = ""
+			+ "\n\tskinparam backgroundColor White"
+
+			+ "\n\tskinparam state {"
+			+ "\n\t\tStartColor Green"
+			+ "\n\t\tEndColor Red"
+
+			+ "\n\t\t'Attribut pour les transitions"
+			+ "\n\t\tArrowColor Black"
+			+ "\n\t\tArrowColor<< Else >> Orange"
+
+			+ "\n\t\t'Attribut par défaut pour les états"
+			+ "\n\t\tBorderColor Gray"
+			+ "\n\t\tBackgroundColor Wheat"
+
+			+ "\n\t\t'Attribut pour les états composites"
+			+ "\n\t\tBackgroundColor<< System       >> Turquoise"
+			+ "\n\t\tBackgroundColor<< Statemachine >> DodgerBlue"
+			+ "\n\t\tBackgroundColor<< Machine      >> SpringGreen"
+			+ "\n\t\tBackgroundColor<< Instance     >> Orchid"
+			+ "\n\t\tBackgroundColor<< Composite    >> SpringGreen"
+
+			+ "\n\t\t'Attribut pour les états simples"
+			+ "\n\t\tBackgroundColor<< simple_hierarchic >> PaleTurquoise"
+			+ "\n\t\tBackgroundColor<< simple >> PaleTurquoise"
+			+ "\n\t\tBackgroundColor<< start  >> Green"
+			+ "\n\t\tBackgroundColor<< final >> Red"
+			+ "\n\t\tBackgroundColor<< sync   >> Aqua"
+
+			+ "\n\t\t'Attribut pour les pseudo-états"
+			+ "\n\t\tBackgroundColor<< pseudostate >> Lavender"
+			+ "\n\t\tBackgroundColor<< initial     >> GreenYellow"
+			+ "\n\t\tBackgroundColor<< junction    >> GreenYellow"
+			+ "\n\t\tBackgroundColor<< choice      >> Orange"
+			+ "\n\t\tBackgroundColor<< fork        >> SpringGreen"
+			+ "\n\t\tBackgroundColor<< junction    >> SpringGreen"
+			+ "\n\t\tBackgroundColor<< dhistory    >> SpringGreen"
+			+ "\n\t\tBackgroundColor<< shistory    >> SpringGreen"
+			+ "\n\t\tBackgroundColor<< return      >> OrangeRed"
+			+ "\n\t\tBackgroundColor<< terminal    >> Red"
+
+			+ "\n\t\tFontColor Black"
+			+ "\n\t\tFontName Times"
+			+ "\n\t\tFontSize 14"
+			+"\n\t}\n\n";
+
+
+
+	protected void addStyleHeader(final StringBuilder buffer) {
+		buffer.append(DEFAULT_PUML_FML_STYLE_HEADER);
+	}
+
+	public String FML2PUML(final List<? extends EObject> eObjs) {
+
+		final FormalMLGenerator fmlGen = new FormalMLGenerator();
+
+		final StringBuilder buffer = new StringBuilder(PlantumlConstants.START_UML + "\n\n");
+
+
+//		initStyle();
+//		Visitor v = initVisitor();
+//		v.setSysML2PlantUMLText(this);
+//
+		addStyleHeader(buffer);
+//
+//		initIdMap();
+//
+		for (final EObject eObj : eObjs) {
+			if (eObj instanceof Machine) {
+				buffer.append( fmlGen.generateMachineGraphic((Machine) eObj) );
+			}
+			else if (eObj instanceof XliaModel) {
+				buffer.append( fmlGen.generateMachineGraphic(((XliaModel) eObj).getSystem()) );
+			}
+		}
+
+
+//		buffer.append(v.getString());
+//		return buffer.toString();
+
+		if( buffer.length() > PlantumlConstants.START_UML.length() + 7) {
+			buffer.append("\n\n" + PlantumlConstants.END_UML);
+
+			return buffer.toString();
+		}
+
+		return DEFAULT_PUML_TEXT;
+	}
+
+
+	public List<? extends EObject> setupVisualizationEObjects(final EObject eObj) {
+		if (eObj != null) {
+			EObject eObjParent = eObj;
+			while (eObjParent != null && !((eObjParent instanceof Machine) || (eObjParent instanceof XliaModel))) {
+				eObjParent = eObjParent.eContainer();
+			}
+			if (eObjParent != null) {
+				final List<EObject> eObjs = new ArrayList<EObject>(1);
+				eObjs.add(eObjParent);
+
+				return eObjs;
+			}
+
+		}
+		return null;
+	}
+
+}
diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FormalMLDiagramLinkOpener.java b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FormalMLDiagramLinkOpener.java
new file mode 100644
index 0000000..efcf395
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FormalMLDiagramLinkOpener.java
@@ -0,0 +1,119 @@
+/*****************************************************************************

+* Copyright (c) 2021 CEA LIST.

+*

+* All rights reserved. This program and the accompanying materials

+* are made available under the terms of the Eclipse Public License v1.0

+* which accompanies this distribution, and is available at

+* http://www.eclipse.org/legal/epl-v10.html

+*

+* Contributors:

+*  Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr

+*  - Initial API and implementation

+*****************************************************************************/

+package org.eclipse.efm.formalml.plantuml;

+

+import java.util.UUID;

+

+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.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.PartInitException;

+import org.eclipse.ui.PlatformUI;

+import org.eclipse.ui.ide.IDE;

+import org.eclipse.xtext.nodemodel.ICompositeNode;

+import org.eclipse.xtext.nodemodel.util.NodeModelUtils;

+import org.eclipse.xtext.ui.editor.XtextEditor;

+

+import net.sourceforge.plantuml.eclipse.utils.ILinkOpener;

+import net.sourceforge.plantuml.eclipse.utils.LinkData;

+

+public class FormalMLDiagramLinkOpener implements ILinkOpener {

+

+    public static final String FML_PLINK_SCHEME = "pfml";

+

+    private URI getURI(final LinkData link) {

+        try {

+            return URI.createURI(link.href);

+        } catch (final IllegalArgumentException e) {

+        }

+        return null;

+    }

+

+    public static URI getEObjectLink(final EObject eObj) {

+        final UUID uuid = Activator.registerEObject(eObj);

+        if (uuid == null) return null;

+        return URI.createGenericURI(FML_PLINK_SCHEME, uuid.toString(), null);

+    }

+

+

+    @Override

+    public int supportsLink(final LinkData link) {

+        final URI uri = getURI(link);

+        if ((uri != null) && (FML_PLINK_SCHEME.equals(uri.scheme()))) {

+            return CUSTOM_SUPPORT;

+        }

+        return NO_SUPPORT;

+    }

+

+

+    private IPath getPath(final EObject eObj) {

+        final Resource r = eObj.eResource();

+        if (r == null) return null;

+

+        URI uri = r.getURI();

+        uri = r.getResourceSet().getURIConverter().normalize(uri);

+        final int size = uri.segmentCount();

+        if ((size > 1)

+            && ("platform".equals(uri.scheme()))

+            && ("resource".equals(uri.segment(0)))) {

+            final StringBuilder path = new StringBuilder();

+            for (int i = 1; i < size; i++) {

+                path.append('/');

+                path.append(URI.decode(uri.segment(i)));

+            }

+            return new Path(path.toString());

+        } else {

+            return new Path(uri.devicePath());

+        }

+    }

+

+    private EObject getEObject(final URI uri) {

+        final String str = uri.opaquePart();

+        if (str == null) return null;

+        try {

+            final UUID uuid = UUID.fromString(str);

+            return Activator.findEObject(uuid);

+        } catch (final IllegalArgumentException e) {

+            return null;

+        }

+    }

+

+    @Override

+    public void openLink(final LinkData link) {

+        final URI uri = getURI(link);

+        if (uri == null) return;

+        final EObject eObj = getEObject(uri);

+        if (eObj == null) return;

+

+        try {

+            final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

+            final IPath path = getPath(eObj);

+            final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);

+            final IEditorPart editor = IDE.openEditor(page, file);

+            if (editor instanceof XtextEditor) {

+                final XtextEditor xeditor = (XtextEditor) editor;

+                final ICompositeNode node = NodeModelUtils.getNode(eObj);

+                xeditor.selectAndReveal(node.getOffset(), node.getLength());

+            }

+        } catch (final PartInitException e) {

+        }

+    }

+

+

+}

diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FormalMLDiagramTextProvider.java b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FormalMLDiagramTextProvider.java
new file mode 100644
index 0000000..9c708da
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/FormalMLDiagramTextProvider.java
@@ -0,0 +1,212 @@
+/*****************************************************************************

+* Copyright (c) 2021 CEA LIST.

+*

+* All rights reserved. This program and the accompanying materials

+* are made available under the terms of the Eclipse Public License v1.0

+* which accompanies this distribution, and is available at

+* http://www.eclipse.org/legal/epl-v10.html

+*

+* Contributors:

+*  Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr

+*  - Initial API and implementation

+*****************************************************************************/

+package org.eclipse.efm.formalml.plantuml;

+

+import java.io.IOException;

+import java.nio.file.Files;

+import java.nio.file.Path;

+import java.util.List;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IResource;

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

+import org.eclipse.jface.text.ITextSelection;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.TreeSelection;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.IViewPart;

+import org.eclipse.ui.navigator.resources.ProjectExplorer;

+import org.eclipse.ui.part.FileEditorInput;

+import org.eclipse.xtext.resource.EObjectAtOffsetHelper;

+import org.eclipse.xtext.resource.XtextResource;

+import org.eclipse.xtext.ui.editor.XtextEditor;

+import org.eclipse.xtext.util.concurrent.IUnitOfWork;

+

+import net.sourceforge.plantuml.eclipse.utils.DiagramTextProvider;

+import net.sourceforge.plantuml.eclipse.utils.PlantumlConstants;

+

+

+public class FormalMLDiagramTextProvider implements DiagramTextProvider {

+

+	public final static String DEFAULT_PUML_TEXT =

+			PlantumlConstants.START_UML + "\n"

+			+ "\nIEditorPart -> ITextSelection: getEditorTextSelection Request"

+			+ "\nITextSelection --> IEditorPart: getEditorTextSelection Response"

+

+			+ "\nIEditorPart -> ITextSelection: getEcoreObjectSelection Request"

+			+ "\nIEditorPart <-- ITextSelection: getEcoreObjectSelection Response\n"

+

+			+ "\nIEditorPart -> ITextSelection: getDiagramText Request"

+			+ "\nIEditorPart <-- ITextSelection: getDiagramText Response"

+			+ "\n\n" + PlantumlConstants.END_UML;

+

+	public final static String DEFAULT_PUML_TEXT_VIEW_PART =

+			PlantumlConstants.START_UML + "\n"

+			+ "\nIViewPart -> TreeSelection: getFilePath Request"

+			+ "\nTreeSelection --> IViewPart: getFilePath Response"

+			+ "\n\n" + PlantumlConstants.END_UML;

+

+

+    private final FML2PlantUMLText fml2PlantUMLText = new FML2PlantUMLText();

+

+    private final EObjectAtOffsetHelper eObjectAtOffsetHelper = new EObjectAtOffsetHelper();

+

+	public FormalMLDiagramTextProvider() {

+	}

+

+

+	protected String textFileContent(final String gvFilePath) {

+		String fileContent = "";

+		try {

+			fileContent = Files.readString(Path.of(gvFilePath));

+		} catch (final IOException e) {

+			fileContent = e.getMessage();

+		}

+

+		return fileContent;

+	}

+

+	protected String dotFileDiagramText(final String gvFilePath) {

+		final StringBuffer gvBuffer = new StringBuffer(PlantumlConstants.START_UML);

+		gvBuffer.append('\n')

+				.append(textFileContent(gvFilePath))

+				.append('\n')

+				.append(PlantumlConstants.END_UML);

+

+		return gvBuffer.toString();

+	}

+

+

+    public String fmlEcoreDiagramText(final IEditorPart editorPart, final ISelection selection) {

+        final XtextEditor xe = (XtextEditor) editorPart;

+        final XtextResource res = xe.getDocument().readOnly(new IUnitOfWork<XtextResource, XtextResource>() {

+            @Override

+            public XtextResource exec(final XtextResource st) {

+                return st;

+            }

+        });

+

+        if (selection instanceof ITextSelection) {

+            final ITextSelection its = (ITextSelection) selection;

+            final int offset = its.getOffset();

+            final EObject eObj = eObjectAtOffsetHelper.resolveElementAt(res, offset);

+            final List<? extends EObject> eObjs = fml2PlantUMLText.setupVisualizationEObjects(eObj);

+            if (eObjs != null) {

+                return fml2PlantUMLText.FML2PUML(eObjs);

+            }

+        }

+

+        return fml2PlantUMLText.FML2PUML(res.getContents());

+    }

+

+

+	@Override

+	public boolean supportsSelection(final ISelection selection) {

+		return selection instanceof ITextSelection;

+	}

+

+	@Override

+	public String getDiagramText(final IEditorPart editorPart, final ISelection selection) {

+//		return DEFAULT_PUML_TEXT;

+		final IEditorInput editorInput = editorPart.getEditorInput();

+		if( editorInput instanceof FileEditorInput )

+		{

+			final IFile file = ((FileEditorInput) editorInput).getFile();

+			if( "xlia".equals(file.getFileExtension())

+				|| "fml".equals(file.getFileExtension()) ) {

+				if( (editorPart instanceof XtextEditor) && (selection instanceof ITextSelection)) {

+					return fmlEcoreDiagramText(editorPart, selection);

+				}

+			}

+			else if( "gv".equals(file.getFileExtension()) ) {

+				return dotFileDiagramText(file.getLocation().toOSString());

+			}

+//			else if( "puml".equals(file.getFileExtension()) ) {

+//				return textFileContent(file.getLocation().toOSString());

+//			}

+		}

+		return DiagramTextProvider.super.getDiagramText(editorPart, selection);

+	}

+

+	@Override

+	public String getDiagramText(final IViewPart viewPart, final ISelection selection) {

+//		return DEFAULT_PUML_TEXT_VIEW_PART;

+

+		if( selection instanceof TreeSelection ) {

+			final TreeSelection treeSelection = (TreeSelection) selection;

+			if( ! treeSelection.isEmpty() ) {

+				final Object element = treeSelection.getFirstElement();

+				if( element instanceof IFile ) {

+					final IResource resource = (IFile) element;

+					if( "gv".equals(resource.getFileExtension()) ) {

+						return dotFileDiagramText(resource.getLocation().toOSString());

+					}

+					else if( "puml".equals(resource.getFileExtension()) ) {

+						return textFileContent(resource.getLocation().toOSString());

+					}

+				}

+			}

+		}

+		return DiagramTextProvider.super.getDiagramText(viewPart, selection);

+	}

+

+	@Override

+	public boolean supportsEditor(final IEditorPart editorPart) {

+		final IEditorInput editorInput = editorPart.getEditorInput();

+		if( editorInput instanceof FileEditorInput )

+		{

+			final IFile file = ((FileEditorInput) editorInput).getFile();

+			return( "xlia".equals(file.getFileExtension())

+				|| "fml".equals(file.getFileExtension())

+				|| "gv".equals(file.getFileExtension()) );

+		}

+

+		return DiagramTextProvider.super.supportsEditor(editorPart);

+	}

+

+	@Override

+	public boolean supportsView(final IViewPart viewPart) {

+		if( viewPart instanceof ProjectExplorer ) {

+			return true;

+		}

+

+		return DiagramTextProvider.super.supportsView(viewPart);

+	}

+

+//	@Override

+//	public boolean supportsPath(final IPath path) {

+//        return "xlia".equals(path.getFileExtension())

+//        		|| "fml".equals(path.getFileExtension())

+//        		|| "gv".equals(path.getFileExtension());

+//	}

+//

+//	@Override

+//	public String getDiagramText(final IEditorPart editorPart, final ISelection selection, final Map<String, Object> markerAttributes) {

+//		// TODO Auto-generated method stub

+//		return null;

+//	}

+//

+//	@Override

+//	public String getDiagramText(final IPath path) {

+//		if( "gv".equals(path.getFileExtension()) ) {

+//			return dotFileDiagramText(path.toOSString());

+//		}

+//		else if( "puml".equals(path.getFileExtension()) ) {

+//			return textFileContent(path.toOSString());

+//		}

+//		return null;

+//	}

+

+

+}
\ No newline at end of file
diff --git a/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/pom.xml b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/pom.xml
new file mode 100644
index 0000000..2089656
--- /dev/null
+++ b/editor/xlia/org.eclipse.efm.formalml.plantuml/src/org/eclipse/efm/formalml/plantuml/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.efm</groupId>
+		<artifactId>org.eclipse.efm.modeling.editor.xlia</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.efm.formalml.plantuml</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>org.eclipse.efm.formalml.plantuml</name>
+	<description>This plug-in contains PlantUML's extension for graphical xLIA model visualization.</description>
+</project>
\ No newline at end of file
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.classpath b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.classpath
index 026e45b..d0c5d81 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.classpath
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen/"/>

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.settings/org.eclipse.jdt.core.prefs b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/META-INF/MANIFEST.MF b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/META-INF/MANIFEST.MF
index 0419e94..18409b9 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/META-INF/MANIFEST.MF
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
  org.eclipse.xtext.ide,

  org.eclipse.xtext.xbase.ide,

  org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.formalml.xtext.ide.contentassist.antlr,

  org.eclipse.efm.formalml.xtext.ide.contentassist.antlr.internal

 Automatic-Module-Name: org.eclipse.efm.formalml.xtext.ide

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/AbstractFormalMLIdeModule.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/AbstractFormalMLIdeModule.java
index c8f1b41..c7eaec9 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/AbstractFormalMLIdeModule.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/AbstractFormalMLIdeModule.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ide;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/FormalMLParser.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/FormalMLParser.java
index 11f09ac..45a75a2 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/FormalMLParser.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/FormalMLParser.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ide.contentassist.antlr;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/PartialFormalMLContentAssistParser.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/PartialFormalMLContentAssistParser.java
index db7cf3c..e554b53 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/PartialFormalMLContentAssistParser.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/PartialFormalMLContentAssistParser.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ide.contentassist.antlr;
 
@@ -20,10 +20,9 @@
 import org.eclipse.xtext.AbstractRule;
 import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement;
 import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
-import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
 import org.eclipse.xtext.util.PolymorphicDispatcher;
 
-public class PartialFormalMLContentAssistParser extends FormalMLParser implements IPartialEditingContentAssistParser {
+public class PartialFormalMLContentAssistParser extends FormalMLParser {
 
 	private AbstractRule rule;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalML.g b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalML.g
index bf6f890..1e031ea 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalML.g
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalML.g
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 grammar InternalFormalML;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalMLParser.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalMLParser.java
index 28b5f2e..3a14abd 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalMLParser.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ide/src-gen/org/eclipse/efm/formalml/xtext/ide/contentassist/antlr/internal/InternalFormalMLParser.java
@@ -33,7 +33,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 @SuppressWarnings("all")
 interface InternalFormalMLParserSignatures {
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.classpath b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.classpath
index c461527..9a77662 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.classpath
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 		<attributes>

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.settings/org.eclipse.jdt.core.prefs b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/META-INF/MANIFEST.MF b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/META-INF/MANIFEST.MF
index d1bab03..6156aca 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/META-INF/MANIFEST.MF
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.eclipse.xtext.xbase.lib;bundle-version="2.14.0",

  org.eclipse.xtext.testing,

  org.eclipse.xtext.xbase.testing

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.formalml.xtext.tests;x-internal=true

 Import-Package: org.hamcrest.core,

  org.junit;version="4.5.0",

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/src-gen/org/eclipse/efm/formalml/xtext/tests/FormalMLInjectorProvider.java b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/src-gen/org/eclipse/efm/formalml/xtext/tests/FormalMLInjectorProvider.java
index 514273f..2e659b6 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.tests/src-gen/org/eclipse/efm/formalml/xtext/tests/FormalMLInjectorProvider.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.tests/src-gen/org/eclipse/efm/formalml/xtext/tests/FormalMLInjectorProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.tests;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/.classpath b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/.classpath
index c461527..c7f7faa 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/.classpath
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/.classpath
@@ -1,18 +1,17 @@
 <?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.8"/>

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

+		<attributes>

+			<attribute name="module" value="true"/>

+		</attributes>

+	</classpathentry>

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

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

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

 		<attributes>

 			<attribute name="test" value="true"/>

 		</attributes>

 	</classpathentry>

-	<classpathentry kind="src" path="src-gen/">

-		<attributes>

-			<attribute name="test" value="true"/>

-		</attributes>

-	</classpathentry>

-	<classpathentry kind="src" path="xtend-gen/">

+	<classpathentry kind="src" path="src-gen">

 		<attributes>

 			<attribute name="test" value="true"/>

 		</attributes>

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/META-INF/MANIFEST.MF b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/META-INF/MANIFEST.MF
index accd26b..69d69e2 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/META-INF/MANIFEST.MF
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
  org.eclipse.xtext.testing,
  org.eclipse.xtext.xbase.testing,
  org.eclipse.xtext.ui.testing
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.efm.formalml.xtext.ui.tests;x-internal=true
 Import-Package: org.hamcrest.core,
  org.junit;version="4.5.0",
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/build.properties b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/build.properties
index db8fe81..9e50af2 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/build.properties
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/build.properties
@@ -11,7 +11,6 @@
 #   - Initial API and Implementation

 ###############################################################################

 source.. = src/,\

-           src-gen/,\

-           xtend-gen/

+           src-gen/

 bin.includes = .,\

                META-INF/

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/src-gen/org/eclipse/efm/formalml/xtext/ui/tests/FormalMLUiInjectorProvider.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/src-gen/org/eclipse/efm/formalml/xtext/ui/tests/FormalMLUiInjectorProvider.java
index b264f20..62b2167 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/src-gen/org/eclipse/efm/formalml/xtext/ui/tests/FormalMLUiInjectorProvider.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui.tests/src-gen/org/eclipse/efm/formalml/xtext/ui/tests/FormalMLUiInjectorProvider.java
@@ -9,6 +9,9 @@
 * Contributors:
 *  Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr
 *  - Initial API and implementation
+*
+******************************************************************************
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ui.tests;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.classpath b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.classpath
index 026e45b..d0c5d81 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.classpath
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen/"/>

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.settings/org.eclipse.jdt.core.prefs b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/META-INF/MANIFEST.MF b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/META-INF/MANIFEST.MF
index 73fc98f..03d5b59 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/META-INF/MANIFEST.MF
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/META-INF/MANIFEST.MF
@@ -19,7 +19,7 @@
  org.eclipse.xtend.lib;bundle-version="2.14.0";resolution:=optional,

  org.eclipse.xtext.xbase.lib;bundle-version="2.14.0"

 Import-Package: org.apache.log4j

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Export-Package: org.eclipse.efm.formalml.xtext.ui.quickfix,

  org.eclipse.efm.formalml.xtext.ui.contentassist,

  org.eclipse.efm.formalml.xtext.ui.internal

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/plugin.xml_gen b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/plugin.xml_gen
index 8fb505a..4a1809a 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/plugin.xml_gen
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/plugin.xml_gen
@@ -339,7 +339,7 @@
 	<!-- Quick Outline -->
 	<extension
 		point="org.eclipse.ui.handlers">
-		<handler 
+		<handler
 			class="org.eclipse.efm.formalml.xtext.ui.FormalMLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
 			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
 			<activeWhen>
@@ -399,7 +399,7 @@
 	</extension>
 	<!-- Rename Refactoring -->
 	<extension point="org.eclipse.ui.handlers">
-		<handler 
+		<handler
 			class="org.eclipse.efm.formalml.xtext.ui.FormalMLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
 			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
 			<activeWhen>
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/AbstractFormalMLUiModule.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/AbstractFormalMLUiModule.java
index 8dc10b3..6265436 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/AbstractFormalMLUiModule.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/AbstractFormalMLUiModule.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ui;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/FormalMLExecutableExtensionFactory.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/FormalMLExecutableExtensionFactory.java
index 7463d56..aefaafc 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/FormalMLExecutableExtensionFactory.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/FormalMLExecutableExtensionFactory.java
@@ -11,15 +11,15 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ui;
 
 import com.google.inject.Injector;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.efm.formalml.xtext.ui.internal.XtextActivator;
 import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
 
 /**
  * This class was generated. Customizations should only happen in a newly
@@ -29,7 +29,7 @@
 
 	@Override
 	protected Bundle getBundle() {
-		return Platform.getBundle(XtextActivator.PLUGIN_ID);
+		return FrameworkUtil.getBundle(XtextActivator.class);
 	}
 	
 	@Override
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/contentassist/AbstractFormalMLProposalProvider.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/contentassist/AbstractFormalMLProposalProvider.java
index 7e93c3f..bd517ec 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/contentassist/AbstractFormalMLProposalProvider.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/contentassist/AbstractFormalMLProposalProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ui.contentassist;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/internal/XtextActivator.java b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/internal/XtextActivator.java
index 248df90..463a35e 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/internal/XtextActivator.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext.ui/src-gen/org/eclipse/efm/formalml/xtext/ui/internal/XtextActivator.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.ui.internal;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/.classpath b/editor/xlia/org.eclipse.efm.formalml.xtext/.classpath
index 026e45b..d0c5d81 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/.classpath
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="src" path="src-gen/"/>

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/.settings/org.eclipse.jdt.core.prefs b/editor/xlia/org.eclipse.efm.formalml.xtext/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/.settings/org.eclipse.jdt.core.prefs
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/META-INF/MANIFEST.MF b/editor/xlia/org.eclipse.efm.formalml.xtext/META-INF/MANIFEST.MF
index 3cfbe59..e41ddb2 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/META-INF/MANIFEST.MF
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.antlr.runtime;bundle-version="[3.2.0,3.2.1)",
  org.eclipse.xtext.util,
  org.eclipse.xtend.lib;bundle-version="2.14.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.efm.formalml.xtext,
  org.eclipse.efm.formalml.xtext.scoping,
  org.eclipse.efm.formalml.xtext.generator,
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/AbstractFormalMLRuntimeModule.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/AbstractFormalMLRuntimeModule.java
index e3b6b09..11b1ae2 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/AbstractFormalMLRuntimeModule.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/AbstractFormalMLRuntimeModule.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/FormalMLStandaloneSetupGenerated.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/FormalMLStandaloneSetupGenerated.java
index ceaab6f..3463db3 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/FormalMLStandaloneSetupGenerated.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/FormalMLStandaloneSetupGenerated.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLAntlrTokenFileProvider.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLAntlrTokenFileProvider.java
index 2c269e7..0e51c8e 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLAntlrTokenFileProvider.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLAntlrTokenFileProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.parser.antlr;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLParser.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLParser.java
index 6b9144b..9f862e6 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLParser.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/FormalMLParser.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.parser.antlr;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalML.g b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalML.g
index d9b218c..b7ed99d 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalML.g
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalML.g
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 grammar InternalFormalML;
 
@@ -1337,7 +1337,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getXliaSystemRule());
 										}
-										setWithLastConsumed($current, "timed", true, "timed");
+										setWithLastConsumed($current, "timed", lv_timed_2_0 != null, "timed");
 									}
 								)
 								))
@@ -1360,7 +1360,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getXliaSystemRule());
 										}
-										setWithLastConsumed($current, "dense_timed", true, "timed#dense");
+										setWithLastConsumed($current, "dense_timed", lv_dense_timed_3_0 != null, "timed#dense");
 									}
 								)
 								))
@@ -1383,7 +1383,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getXliaSystemRule());
 										}
-										setWithLastConsumed($current, "discrete_timed", true, "timed#discrete");
+										setWithLastConsumed($current, "discrete_timed", lv_discrete_timed_4_0 != null, "timed#discrete");
 									}
 								)
 								))
@@ -1406,7 +1406,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getXliaSystemRule());
 										}
-										setWithLastConsumed($current, "input_enabled", true, "input_enabled");
+										setWithLastConsumed($current, "input_enabled", lv_input_enabled_5_0 != null, "input_enabled");
 									}
 								)
 								))
@@ -1429,7 +1429,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getXliaSystemRule());
 										}
-										setWithLastConsumed($current, "unsafe", true, "unsafe");
+										setWithLastConsumed($current, "unsafe", lv_unsafe_6_0 != null, "unsafe");
 									}
 								)
 								))
@@ -3048,7 +3048,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getMachineBlockRule());
 										}
-										setWithLastConsumed($current, "timed", true, "timed");
+										setWithLastConsumed($current, "timed", lv_timed_2_0 != null, "timed");
 									}
 								)
 								))
@@ -3071,7 +3071,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getMachineBlockRule());
 										}
-										setWithLastConsumed($current, "dense_timed", true, "timed#dense");
+										setWithLastConsumed($current, "dense_timed", lv_dense_timed_3_0 != null, "timed#dense");
 									}
 								)
 								))
@@ -3094,7 +3094,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getMachineBlockRule());
 										}
-										setWithLastConsumed($current, "discrete_timed", true, "timed#discrete");
+										setWithLastConsumed($current, "discrete_timed", lv_discrete_timed_4_0 != null, "timed#discrete");
 									}
 								)
 								))
@@ -3117,7 +3117,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getMachineBlockRule());
 										}
-										setWithLastConsumed($current, "input_enabled", true, "input_enabled");
+										setWithLastConsumed($current, "input_enabled", lv_input_enabled_5_0 != null, "input_enabled");
 									}
 								)
 								))
@@ -3140,7 +3140,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getMachineBlockRule());
 										}
-										setWithLastConsumed($current, "lifeline", true, "lifeline");
+										setWithLastConsumed($current, "lifeline", lv_lifeline_6_0 != null, "lifeline");
 									}
 								)
 								))
@@ -6345,7 +6345,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getStatemachineRule());
 										}
-										setWithLastConsumed($current, "timed", true, "timed");
+										setWithLastConsumed($current, "timed", lv_timed_3_0 != null, "timed");
 									}
 								)
 								))
@@ -6368,7 +6368,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getStatemachineRule());
 										}
-										setWithLastConsumed($current, "dense_timed", true, "timed#dense");
+										setWithLastConsumed($current, "dense_timed", lv_dense_timed_4_0 != null, "timed#dense");
 									}
 								)
 								))
@@ -6391,7 +6391,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getStatemachineRule());
 										}
-										setWithLastConsumed($current, "discrete_timed", true, "timed#discrete");
+										setWithLastConsumed($current, "discrete_timed", lv_discrete_timed_5_0 != null, "timed#discrete");
 									}
 								)
 								))
@@ -6414,7 +6414,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getStatemachineRule());
 										}
-										setWithLastConsumed($current, "input_enabled", true, "input_enabled");
+										setWithLastConsumed($current, "input_enabled", lv_input_enabled_6_0 != null, "input_enabled");
 									}
 								)
 								))
@@ -6437,7 +6437,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getStatemachineRule());
 										}
-										setWithLastConsumed($current, "lifeline", true, "lifeline");
+										setWithLastConsumed($current, "lifeline", lv_lifeline_7_0 != null, "lifeline");
 									}
 								)
 								))
@@ -8391,7 +8391,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getCompositeStateRule());
 					}
-					setWithLastConsumed($current, "composite", true, "state");
+					setWithLastConsumed($current, "composite", lv_composite_1_0 != null, "state");
 				}
 			)
 		)
@@ -8421,7 +8421,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getCompositeStateRule());
 						}
-						setWithLastConsumed($current, "orthogonal", true, "and");
+						setWithLastConsumed($current, "orthogonal", lv_orthogonal_5_0 != null, "and");
 					}
 				)
 			)
@@ -9140,7 +9140,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getSimpleStateRule());
 					}
-					setWithLastConsumed($current, "simple", true, "state");
+					setWithLastConsumed($current, "simple", lv_simple_1_0 != null, "state");
 				}
 			)
 		)
@@ -9501,7 +9501,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getStartStateRule());
 							}
-							setWithLastConsumed($current, "simple", true, "state");
+							setWithLastConsumed($current, "simple", lv_simple_1_0 != null, "state");
 						}
 					)
 				)
@@ -9554,7 +9554,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getStartStateRule());
 						}
-						setWithLastConsumed($current, "simple", true, "#start");
+						setWithLastConsumed($current, "simple", lv_simple_7_0 != null, "#start");
 					}
 				)
 			)
@@ -9969,7 +9969,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getFinalStateRule());
 							}
-							setWithLastConsumed($current, "simple", true, "state");
+							setWithLastConsumed($current, "simple", lv_simple_1_0 != null, "state");
 						}
 					)
 				)
@@ -10022,7 +10022,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getFinalStateRule());
 						}
-						setWithLastConsumed($current, "simple", true, "#final");
+						setWithLastConsumed($current, "simple", lv_simple_7_0 != null, "#final");
 					}
 				)
 			)
@@ -11562,7 +11562,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getRoutineRule());
 					}
-					setWithLastConsumed($current, "macro", true, "macro");
+					setWithLastConsumed($current, "macro", lv_macro_1_0 != null, "macro");
 				}
 			)
 		)?
@@ -13639,7 +13639,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getOtherDataTypeDefinitionRule());
 					}
-					setWithLastConsumed($current, "typedef", true, "type");
+					setWithLastConsumed($current, "typedef", lv_typedef_2_0 != null, "type");
 				}
 			)
 		)
@@ -15069,7 +15069,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getPrimitiveTimeTypeRule());
 						}
-						setWithLastConsumed($current, "clock", true, "clock");
+						setWithLastConsumed($current, "clock", lv_clock_7_0 != null, "clock");
 					}
 				)
 			)
@@ -15606,7 +15606,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getIntervalTypeRule());
 						}
-						setWithLastConsumed($current, "lopen", true, "]");
+						setWithLastConsumed($current, "lopen", lv_lopen_4_0 != null, "]");
 					}
 				)
 			)
@@ -15674,7 +15674,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getIntervalTypeRule());
 						}
-						setWithLastConsumed($current, "ropen", true, "[");
+						setWithLastConsumed($current, "ropen", lv_ropen_10_0 != null, "[");
 					}
 				)
 			)
@@ -15811,7 +15811,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getIntervalTypeDefinitionRule());
 						}
-						setWithLastConsumed($current, "lopen", true, "]");
+						setWithLastConsumed($current, "lopen", lv_lopen_8_0 != null, "]");
 					}
 				)
 			)
@@ -15879,7 +15879,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getIntervalTypeDefinitionRule());
 						}
-						setWithLastConsumed($current, "ropen", true, "[");
+						setWithLastConsumed($current, "ropen", lv_ropen_14_0 != null, "[");
 					}
 				)
 			)
@@ -16000,7 +16000,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getCollectionTypeRule());
 								}
-								setWithLastConsumed($current, "unbounded", true, "*");
+								setWithLastConsumed($current, "unbounded", lv_unbounded_6_0 != null, "*");
 							}
 						)
 					)
@@ -16179,7 +16179,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getCollectionTypeDefinitionRule());
 							}
-							setWithLastConsumed($current, "unbounded", true, "*");
+							setWithLastConsumed($current, "unbounded", lv_unbounded_10_0 != null, "*");
 						}
 					)
 				)
@@ -16371,7 +16371,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getEnumerationTypeDefinitionRule());
 					}
-					setWithLastConsumed($current, "typedef", true, "type");
+					setWithLastConsumed($current, "typedef", lv_typedef_2_0 != null, "type");
 				}
 			)
 		)
@@ -16710,7 +16710,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getStructureTypeDefinitionRule());
 					}
-					setWithLastConsumed($current, "typedef", true, "type");
+					setWithLastConsumed($current, "typedef", lv_typedef_2_0 != null, "type");
 				}
 			)
 		)
@@ -16913,7 +16913,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getUnionTypeDefinitionRule());
 					}
-					setWithLastConsumed($current, "typedef", true, "type");
+					setWithLastConsumed($current, "typedef", lv_typedef_2_0 != null, "type");
 				}
 			)
 		)
@@ -17116,7 +17116,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getChoiceTypeDefinitionRule());
 					}
-					setWithLastConsumed($current, "typedef", true, "type");
+					setWithLastConsumed($current, "typedef", lv_typedef_2_0 != null, "type");
 				}
 			)
 		)
@@ -17255,7 +17255,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getModifierRule());
 										}
-										setWithLastConsumed($current, "static", true, "static");
+										setWithLastConsumed($current, "static", lv_static_2_0 != null, "static");
 									}
 								)
 								))
@@ -17278,7 +17278,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getModifierRule());
 										}
-										setWithLastConsumed($current, "final", true, "final");
+										setWithLastConsumed($current, "final", lv_final_3_0 != null, "final");
 									}
 								)
 								))
@@ -17301,7 +17301,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getModifierRule());
 										}
-										setWithLastConsumed($current, "volatile", true, "volatile");
+										setWithLastConsumed($current, "volatile", lv_volatile_4_0 != null, "volatile");
 									}
 								)
 								))
@@ -17324,7 +17324,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getModifierRule());
 										}
-										setWithLastConsumed($current, "transient", true, "transient");
+										setWithLastConsumed($current, "transient", lv_transient_5_0 != null, "transient");
 									}
 								)
 								))
@@ -17347,7 +17347,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getModifierRule());
 										}
-										setWithLastConsumed($current, "optional", true, "optional");
+										setWithLastConsumed($current, "optional", lv_optional_6_0 != null, "optional");
 									}
 								)
 								))
@@ -17986,7 +17986,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getVariableRule());
 						}
-						setWithLastConsumed($current, "const", true, "val");
+						setWithLastConsumed($current, "const", lv_const_4_0 != null, "val");
 					}
 				)
 			)
@@ -18003,7 +18003,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getVariableRule());
 								}
-								setWithLastConsumed($current, "const", true, "const");
+								setWithLastConsumed($current, "const", lv_const_5_0 != null, "const");
 							}
 						)
 					)
@@ -18018,7 +18018,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getVariableRule());
 								}
-								setWithLastConsumed($current, "const", true, "final");
+								setWithLastConsumed($current, "const", lv_const_6_0 != null, "final");
 							}
 						)
 					)
@@ -18033,7 +18033,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getVariableRule());
 							}
-							setWithLastConsumed($current, "macro", true, "macro");
+							setWithLastConsumed($current, "macro", lv_macro_7_0 != null, "macro");
 						}
 					)
 				)?
@@ -18056,7 +18056,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getVariableRule());
 							}
-							setWithLastConsumed($current, "macro", true, "macro");
+							setWithLastConsumed($current, "macro", lv_macro_9_0 != null, "macro");
 						}
 					)
 				)
@@ -18076,7 +18076,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getVariableRule());
 								}
-								setWithLastConsumed($current, "const", true, "val");
+								setWithLastConsumed($current, "const", lv_const_11_0 != null, "val");
 							}
 						)
 					)
@@ -18112,7 +18112,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getVariableRule());
 					}
-					setWithLastConsumed($current, "reference", true, "&");
+					setWithLastConsumed($current, "reference", lv_reference_13_0 != null, "&");
 				}
 			)
 		)?
@@ -18272,7 +18272,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getVariableImplRule());
 						}
-						setWithLastConsumed($current, "const", true, "val");
+						setWithLastConsumed($current, "const", lv_const_2_0 != null, "val");
 					}
 				)
 			)
@@ -18288,7 +18288,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getVariableImplRule());
 							}
-							setWithLastConsumed($current, "const", true, "const");
+							setWithLastConsumed($current, "const", lv_const_3_0 != null, "const");
 						}
 					)
 				)
@@ -18302,7 +18302,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getVariableImplRule());
 							}
-							setWithLastConsumed($current, "macro", true, "macro");
+							setWithLastConsumed($current, "macro", lv_macro_4_0 != null, "macro");
 						}
 					)
 				)?
@@ -18325,7 +18325,7 @@
 							if ($current==null) {
 								$current = createModelElement(grammarAccess.getVariableImplRule());
 							}
-							setWithLastConsumed($current, "macro", true, "macro");
+							setWithLastConsumed($current, "macro", lv_macro_6_0 != null, "macro");
 						}
 					)
 				)
@@ -18345,7 +18345,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getVariableImplRule());
 								}
-								setWithLastConsumed($current, "const", true, "val");
+								setWithLastConsumed($current, "const", lv_const_8_0 != null, "val");
 							}
 						)
 					)
@@ -18381,7 +18381,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getVariableImplRule());
 					}
-					setWithLastConsumed($current, "reference", true, "&");
+					setWithLastConsumed($current, "reference", lv_reference_10_0 != null, "&");
 				}
 			)
 		)?
@@ -19494,7 +19494,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getBufferContainerTypeRule());
 								}
-								setWithLastConsumed($current, "unbounded", true, "*");
+								setWithLastConsumed($current, "unbounded", lv_unbounded_5_0 != null, "*");
 							}
 						)
 					)
@@ -19549,7 +19549,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getBufferContainerTypeRule());
 								}
-								setWithLastConsumed($current, "unbounded", true, "*");
+								setWithLastConsumed($current, "unbounded", lv_unbounded_10_0 != null, "*");
 							}
 						)
 					)
@@ -21328,7 +21328,7 @@
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getTransitionRule());
 					}
-					setWithLastConsumed($current, "transient", true, "transient");
+					setWithLastConsumed($current, "transient", lv_transient_1_0 != null, "transient");
 				}
 			)
 		)?
@@ -21836,7 +21836,7 @@
 										if ($current==null) {
 											$current = createModelElement(grammarAccess.getTransitionMoeRule());
 										}
-										setWithLastConsumed($current, "isElse", true, "else");
+										setWithLastConsumed($current, "isElse", lv_isElse_4_0 != null, "else");
 									}
 								)
 							)
@@ -21853,7 +21853,7 @@
 								if ($current==null) {
 									$current = createModelElement(grammarAccess.getTransitionMoeRule());
 								}
-								setWithLastConsumed($current, "isElse", true, "else");
+								setWithLastConsumed($current, "isElse", lv_isElse_5_0 != null, "else");
 							}
 						)
 					)
@@ -24903,7 +24903,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getInvokeStatementRule());
 						}
-						setWithLastConsumed($current, "execRoutine", true, "(");
+						setWithLastConsumed($current, "execRoutine", lv_execRoutine_3_0 != null, "(");
 					}
 				)
 			)
@@ -25044,7 +25044,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getInvokeStatementRule());
 						}
-						setWithLastConsumed($current, "execRoutine", true, "exec");
+						setWithLastConsumed($current, "execRoutine", lv_execRoutine_16_0 != null, "exec");
 					}
 				)
 			)
@@ -25208,7 +25208,7 @@
 						if ($current==null) {
 							$current = createModelElement(grammarAccess.getInvokeStatementRule());
 						}
-						setWithLastConsumed($current, "callProcedure", true, "call");
+						setWithLastConsumed($current, "callProcedure", lv_callProcedure_31_0 != null, "call");
 					}
 				)
 			)
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalMLParser.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalMLParser.java
index c0cc577..27bec4f 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalMLParser.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/parser/antlr/internal/InternalFormalMLParser.java
@@ -34,7 +34,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 @SuppressWarnings("all")
 public class InternalFormalMLParser extends AbstractInternalAntlrParser {
@@ -4519,7 +4519,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getXliaSystemRule());
             	      										}
-            	      										setWithLastConsumed(current, "timed", true, "timed");
+            	      										setWithLastConsumed(current, "timed", lv_timed_2_0 != null, "timed");
             	      									
             	    }
 
@@ -4579,7 +4579,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getXliaSystemRule());
             	      										}
-            	      										setWithLastConsumed(current, "dense_timed", true, "timed#dense");
+            	      										setWithLastConsumed(current, "dense_timed", lv_dense_timed_3_0 != null, "timed#dense");
             	      									
             	    }
 
@@ -4639,7 +4639,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getXliaSystemRule());
             	      										}
-            	      										setWithLastConsumed(current, "discrete_timed", true, "timed#discrete");
+            	      										setWithLastConsumed(current, "discrete_timed", lv_discrete_timed_4_0 != null, "timed#discrete");
             	      									
             	    }
 
@@ -4699,7 +4699,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getXliaSystemRule());
             	      										}
-            	      										setWithLastConsumed(current, "input_enabled", true, "input_enabled");
+            	      										setWithLastConsumed(current, "input_enabled", lv_input_enabled_5_0 != null, "input_enabled");
             	      									
             	    }
 
@@ -4759,7 +4759,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getXliaSystemRule());
             	      										}
-            	      										setWithLastConsumed(current, "unsafe", true, "unsafe");
+            	      										setWithLastConsumed(current, "unsafe", lv_unsafe_6_0 != null, "unsafe");
             	      									
             	    }
 
@@ -9193,7 +9193,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getMachineBlockRule());
             	      										}
-            	      										setWithLastConsumed(current, "timed", true, "timed");
+            	      										setWithLastConsumed(current, "timed", lv_timed_2_0 != null, "timed");
             	      									
             	    }
 
@@ -9253,7 +9253,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getMachineBlockRule());
             	      										}
-            	      										setWithLastConsumed(current, "dense_timed", true, "timed#dense");
+            	      										setWithLastConsumed(current, "dense_timed", lv_dense_timed_3_0 != null, "timed#dense");
             	      									
             	    }
 
@@ -9313,7 +9313,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getMachineBlockRule());
             	      										}
-            	      										setWithLastConsumed(current, "discrete_timed", true, "timed#discrete");
+            	      										setWithLastConsumed(current, "discrete_timed", lv_discrete_timed_4_0 != null, "timed#discrete");
             	      									
             	    }
 
@@ -9373,7 +9373,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getMachineBlockRule());
             	      										}
-            	      										setWithLastConsumed(current, "input_enabled", true, "input_enabled");
+            	      										setWithLastConsumed(current, "input_enabled", lv_input_enabled_5_0 != null, "input_enabled");
             	      									
             	    }
 
@@ -9433,7 +9433,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getMachineBlockRule());
             	      										}
-            	      										setWithLastConsumed(current, "lifeline", true, "lifeline");
+            	      										setWithLastConsumed(current, "lifeline", lv_lifeline_6_0 != null, "lifeline");
             	      									
             	    }
 
@@ -18089,7 +18089,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getStatemachineRule());
             	      										}
-            	      										setWithLastConsumed(current, "timed", true, "timed");
+            	      										setWithLastConsumed(current, "timed", lv_timed_3_0 != null, "timed");
             	      									
             	    }
 
@@ -18149,7 +18149,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getStatemachineRule());
             	      										}
-            	      										setWithLastConsumed(current, "dense_timed", true, "timed#dense");
+            	      										setWithLastConsumed(current, "dense_timed", lv_dense_timed_4_0 != null, "timed#dense");
             	      									
             	    }
 
@@ -18209,7 +18209,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getStatemachineRule());
             	      										}
-            	      										setWithLastConsumed(current, "discrete_timed", true, "timed#discrete");
+            	      										setWithLastConsumed(current, "discrete_timed", lv_discrete_timed_5_0 != null, "timed#discrete");
             	      									
             	    }
 
@@ -18269,7 +18269,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getStatemachineRule());
             	      										}
-            	      										setWithLastConsumed(current, "input_enabled", true, "input_enabled");
+            	      										setWithLastConsumed(current, "input_enabled", lv_input_enabled_6_0 != null, "input_enabled");
             	      									
             	    }
 
@@ -18329,7 +18329,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getStatemachineRule());
             	      										}
-            	      										setWithLastConsumed(current, "lifeline", true, "lifeline");
+            	      										setWithLastConsumed(current, "lifeline", lv_lifeline_7_0 != null, "lifeline");
             	      									
             	    }
 
@@ -23837,7 +23837,7 @@
               					if (current==null) {
               						current = createModelElement(grammarAccess.getCompositeStateRule());
               					}
-              					setWithLastConsumed(current, "composite", true, "state");
+              					setWithLastConsumed(current, "composite", lv_composite_1_0 != null, "state");
               				
             }
 
@@ -23925,7 +23925,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getCompositeStateRule());
                       						}
-                      						setWithLastConsumed(current, "orthogonal", true, "and");
+                      						setWithLastConsumed(current, "orthogonal", lv_orthogonal_5_0 != null, "and");
                       					
                     }
 
@@ -25974,7 +25974,7 @@
               					if (current==null) {
               						current = createModelElement(grammarAccess.getSimpleStateRule());
               					}
-              					setWithLastConsumed(current, "simple", true, "state");
+              					setWithLastConsumed(current, "simple", lv_simple_1_0 != null, "state");
               				
             }
 
@@ -27035,7 +27035,7 @@
                       							if (current==null) {
                       								current = createModelElement(grammarAccess.getStartStateRule());
                       							}
-                      							setWithLastConsumed(current, "simple", true, "state");
+                      							setWithLastConsumed(current, "simple", lv_simple_1_0 != null, "state");
                       						
                     }
 
@@ -27146,7 +27146,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getStartStateRule());
                       						}
-                      						setWithLastConsumed(current, "simple", true, "#start");
+                      						setWithLastConsumed(current, "simple", lv_simple_7_0 != null, "#start");
                       					
                     }
 
@@ -28279,7 +28279,7 @@
                       							if (current==null) {
                       								current = createModelElement(grammarAccess.getFinalStateRule());
                       							}
-                      							setWithLastConsumed(current, "simple", true, "state");
+                      							setWithLastConsumed(current, "simple", lv_simple_1_0 != null, "state");
                       						
                     }
 
@@ -28390,7 +28390,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getFinalStateRule());
                       						}
-                      						setWithLastConsumed(current, "simple", true, "#final");
+                      						setWithLastConsumed(current, "simple", lv_simple_7_0 != null, "#final");
                       					
                     }
 
@@ -32924,7 +32924,7 @@
                       					if (current==null) {
                       						current = createModelElement(grammarAccess.getRoutineRule());
                       					}
-                      					setWithLastConsumed(current, "macro", true, "macro");
+                      					setWithLastConsumed(current, "macro", lv_macro_1_0 != null, "macro");
                       				
                     }
 
@@ -38755,7 +38755,7 @@
               					if (current==null) {
               						current = createModelElement(grammarAccess.getOtherDataTypeDefinitionRule());
               					}
-              					setWithLastConsumed(current, "typedef", true, "type");
+              					setWithLastConsumed(current, "typedef", lv_typedef_2_0 != null, "type");
               				
             }
 
@@ -42807,7 +42807,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getPrimitiveTimeTypeRule());
                       						}
-                      						setWithLastConsumed(current, "clock", true, "clock");
+                      						setWithLastConsumed(current, "clock", lv_clock_7_0 != null, "clock");
                       					
                     }
 
@@ -44576,7 +44576,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getIntervalTypeRule());
                       						}
-                      						setWithLastConsumed(current, "lopen", true, "]");
+                      						setWithLastConsumed(current, "lopen", lv_lopen_4_0 != null, "]");
                       					
                     }
 
@@ -44729,7 +44729,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getIntervalTypeRule());
                       						}
-                      						setWithLastConsumed(current, "ropen", true, "[");
+                      						setWithLastConsumed(current, "ropen", lv_ropen_10_0 != null, "[");
                       					
                     }
 
@@ -45088,7 +45088,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getIntervalTypeDefinitionRule());
                       						}
-                      						setWithLastConsumed(current, "lopen", true, "]");
+                      						setWithLastConsumed(current, "lopen", lv_lopen_8_0 != null, "]");
                       					
                     }
 
@@ -45241,7 +45241,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getIntervalTypeDefinitionRule());
                       						}
-                      						setWithLastConsumed(current, "ropen", true, "[");
+                      						setWithLastConsumed(current, "ropen", lv_ropen_14_0 != null, "[");
                       					
                     }
 
@@ -45559,7 +45559,7 @@
                                       								if (current==null) {
                                       									current = createModelElement(grammarAccess.getCollectionTypeRule());
                                       								}
-                                      								setWithLastConsumed(current, "unbounded", true, "*");
+                                      								setWithLastConsumed(current, "unbounded", lv_unbounded_6_0 != null, "*");
                                       							
                                     }
 
@@ -46013,7 +46013,7 @@
                               							if (current==null) {
                               								current = createModelElement(grammarAccess.getCollectionTypeDefinitionRule());
                               							}
-                              							setWithLastConsumed(current, "unbounded", true, "*");
+                              							setWithLastConsumed(current, "unbounded", lv_unbounded_10_0 != null, "*");
                               						
                             }
 
@@ -46543,7 +46543,7 @@
               					if (current==null) {
               						current = createModelElement(grammarAccess.getEnumerationTypeDefinitionRule());
               					}
-              					setWithLastConsumed(current, "typedef", true, "type");
+              					setWithLastConsumed(current, "typedef", lv_typedef_2_0 != null, "type");
               				
             }
 
@@ -47446,7 +47446,7 @@
               					if (current==null) {
               						current = createModelElement(grammarAccess.getStructureTypeDefinitionRule());
               					}
-              					setWithLastConsumed(current, "typedef", true, "type");
+              					setWithLastConsumed(current, "typedef", lv_typedef_2_0 != null, "type");
               				
             }
 
@@ -48014,7 +48014,7 @@
               					if (current==null) {
               						current = createModelElement(grammarAccess.getUnionTypeDefinitionRule());
               					}
-              					setWithLastConsumed(current, "typedef", true, "type");
+              					setWithLastConsumed(current, "typedef", lv_typedef_2_0 != null, "type");
               				
             }
 
@@ -48582,7 +48582,7 @@
               					if (current==null) {
               						current = createModelElement(grammarAccess.getChoiceTypeDefinitionRule());
               					}
-              					setWithLastConsumed(current, "typedef", true, "type");
+              					setWithLastConsumed(current, "typedef", lv_typedef_2_0 != null, "type");
               				
             }
 
@@ -48940,7 +48940,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getModifierRule());
             	      										}
-            	      										setWithLastConsumed(current, "static", true, "static");
+            	      										setWithLastConsumed(current, "static", lv_static_2_0 != null, "static");
             	      									
             	    }
 
@@ -49000,7 +49000,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getModifierRule());
             	      										}
-            	      										setWithLastConsumed(current, "final", true, "final");
+            	      										setWithLastConsumed(current, "final", lv_final_3_0 != null, "final");
             	      									
             	    }
 
@@ -49060,7 +49060,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getModifierRule());
             	      										}
-            	      										setWithLastConsumed(current, "volatile", true, "volatile");
+            	      										setWithLastConsumed(current, "volatile", lv_volatile_4_0 != null, "volatile");
             	      									
             	    }
 
@@ -49120,7 +49120,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getModifierRule());
             	      										}
-            	      										setWithLastConsumed(current, "transient", true, "transient");
+            	      										setWithLastConsumed(current, "transient", lv_transient_5_0 != null, "transient");
             	      									
             	    }
 
@@ -49180,7 +49180,7 @@
             	      										if (current==null) {
             	      											current = createModelElement(grammarAccess.getModifierRule());
             	      										}
-            	      										setWithLastConsumed(current, "optional", true, "optional");
+            	      										setWithLastConsumed(current, "optional", lv_optional_6_0 != null, "optional");
             	      									
             	    }
 
@@ -50957,7 +50957,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getVariableRule());
                       						}
-                      						setWithLastConsumed(current, "const", true, "val");
+                      						setWithLastConsumed(current, "const", lv_const_4_0 != null, "val");
                       					
                     }
 
@@ -51013,7 +51013,7 @@
                               								if (current==null) {
                               									current = createModelElement(grammarAccess.getVariableRule());
                               								}
-                              								setWithLastConsumed(current, "const", true, "const");
+                              								setWithLastConsumed(current, "const", lv_const_5_0 != null, "const");
                               							
                             }
 
@@ -51045,7 +51045,7 @@
                               								if (current==null) {
                               									current = createModelElement(grammarAccess.getVariableRule());
                               								}
-                              								setWithLastConsumed(current, "const", true, "final");
+                              								setWithLastConsumed(current, "const", lv_const_6_0 != null, "final");
                               							
                             }
 
@@ -51085,7 +51085,7 @@
                               							if (current==null) {
                               								current = createModelElement(grammarAccess.getVariableRule());
                               							}
-                              							setWithLastConsumed(current, "macro", true, "macro");
+                              							setWithLastConsumed(current, "macro", lv_macro_7_0 != null, "macro");
                               						
                             }
 
@@ -51149,7 +51149,7 @@
                       							if (current==null) {
                       								current = createModelElement(grammarAccess.getVariableRule());
                       							}
-                      							setWithLastConsumed(current, "macro", true, "macro");
+                      							setWithLastConsumed(current, "macro", lv_macro_9_0 != null, "macro");
                       						
                     }
 
@@ -51201,7 +51201,7 @@
                               								if (current==null) {
                               									current = createModelElement(grammarAccess.getVariableRule());
                               								}
-                              								setWithLastConsumed(current, "const", true, "val");
+                              								setWithLastConsumed(current, "const", lv_const_11_0 != null, "val");
                               							
                             }
 
@@ -51285,7 +51285,7 @@
                       					if (current==null) {
                       						current = createModelElement(grammarAccess.getVariableRule());
                       					}
-                      					setWithLastConsumed(current, "reference", true, "&");
+                      					setWithLastConsumed(current, "reference", lv_reference_13_0 != null, "&");
                       				
                     }
 
@@ -51789,7 +51789,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getVariableImplRule());
                       						}
-                      						setWithLastConsumed(current, "const", true, "val");
+                      						setWithLastConsumed(current, "const", lv_const_2_0 != null, "val");
                       					
                     }
 
@@ -51824,7 +51824,7 @@
                       							if (current==null) {
                       								current = createModelElement(grammarAccess.getVariableImplRule());
                       							}
-                      							setWithLastConsumed(current, "const", true, "const");
+                      							setWithLastConsumed(current, "const", lv_const_3_0 != null, "const");
                       						
                     }
 
@@ -51858,7 +51858,7 @@
                               							if (current==null) {
                               								current = createModelElement(grammarAccess.getVariableImplRule());
                               							}
-                              							setWithLastConsumed(current, "macro", true, "macro");
+                              							setWithLastConsumed(current, "macro", lv_macro_4_0 != null, "macro");
                               						
                             }
 
@@ -51922,7 +51922,7 @@
                       							if (current==null) {
                       								current = createModelElement(grammarAccess.getVariableImplRule());
                       							}
-                      							setWithLastConsumed(current, "macro", true, "macro");
+                      							setWithLastConsumed(current, "macro", lv_macro_6_0 != null, "macro");
                       						
                     }
 
@@ -51974,7 +51974,7 @@
                               								if (current==null) {
                               									current = createModelElement(grammarAccess.getVariableImplRule());
                               								}
-                              								setWithLastConsumed(current, "const", true, "val");
+                              								setWithLastConsumed(current, "const", lv_const_8_0 != null, "val");
                               							
                             }
 
@@ -52058,7 +52058,7 @@
                       					if (current==null) {
                       						current = createModelElement(grammarAccess.getVariableImplRule());
                       					}
-                      					setWithLastConsumed(current, "reference", true, "&");
+                      					setWithLastConsumed(current, "reference", lv_reference_10_0 != null, "&");
                       				
                     }
 
@@ -55202,7 +55202,7 @@
                               								if (current==null) {
                               									current = createModelElement(grammarAccess.getBufferContainerTypeRule());
                               								}
-                              								setWithLastConsumed(current, "unbounded", true, "*");
+                              								setWithLastConsumed(current, "unbounded", lv_unbounded_5_0 != null, "*");
                               							
                             }
 
@@ -55342,7 +55342,7 @@
                               								if (current==null) {
                               									current = createModelElement(grammarAccess.getBufferContainerTypeRule());
                               								}
-                              								setWithLastConsumed(current, "unbounded", true, "*");
+                              								setWithLastConsumed(current, "unbounded", lv_unbounded_10_0 != null, "*");
                               							
                             }
 
@@ -60485,7 +60485,7 @@
                       					if (current==null) {
                       						current = createModelElement(grammarAccess.getTransitionRule());
                       					}
-                      					setWithLastConsumed(current, "transient", true, "transient");
+                      					setWithLastConsumed(current, "transient", lv_transient_1_0 != null, "transient");
                       				
                     }
 
@@ -62295,7 +62295,7 @@
                                       										if (current==null) {
                                       											current = createModelElement(grammarAccess.getTransitionMoeRule());
                                       										}
-                                      										setWithLastConsumed(current, "isElse", true, "else");
+                                      										setWithLastConsumed(current, "isElse", lv_isElse_4_0 != null, "else");
                                       									
                                     }
 
@@ -62336,7 +62336,7 @@
                               								if (current==null) {
                               									current = createModelElement(grammarAccess.getTransitionMoeRule());
                               								}
-                              								setWithLastConsumed(current, "isElse", true, "else");
+                              								setWithLastConsumed(current, "isElse", lv_isElse_5_0 != null, "else");
                               							
                             }
 
@@ -70658,7 +70658,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getInvokeStatementRule());
                       						}
-                      						setWithLastConsumed(current, "execRoutine", true, "(");
+                      						setWithLastConsumed(current, "execRoutine", lv_execRoutine_3_0 != null, "(");
                       					
                     }
 
@@ -71014,7 +71014,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getInvokeStatementRule());
                       						}
-                      						setWithLastConsumed(current, "execRoutine", true, "exec");
+                      						setWithLastConsumed(current, "execRoutine", lv_execRoutine_16_0 != null, "exec");
                       					
                     }
 
@@ -71415,7 +71415,7 @@
                       						if (current==null) {
                       							current = createModelElement(grammarAccess.getInvokeStatementRule());
                       						}
-                      						setWithLastConsumed(current, "callProcedure", true, "call");
+                      						setWithLastConsumed(current, "callProcedure", lv_callProcedure_31_0 != null, "call");
                       					
                     }
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/scoping/AbstractFormalMLScopeProvider.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/scoping/AbstractFormalMLScopeProvider.java
index 9b3afb6..311a1d1 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/scoping/AbstractFormalMLScopeProvider.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/scoping/AbstractFormalMLScopeProvider.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.scoping;
 
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSemanticSequencer.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSemanticSequencer.java
index d98962f..e348a34 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSemanticSequencer.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSemanticSequencer.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.serializer;
 
@@ -3167,7 +3167,7 @@
 	 *     LiteralCollectionExpression returns LiteralCollectionExpression
 	 *
 	 * Constraint:
-	 *     (datatype=DataType? ((value+=Expression | value+=NamedExpression) value+=NamedExpression? (value+=Expression? value+=NamedExpression?)*)?)
+	 *     (datatype=DataType? ((value+=Expression | value+=NamedExpression) value+=Expression? (value+=NamedExpression? value+=Expression?)*)?)
 	 */
 	protected void sequence_LiteralCollectionExpression(ISerializationContext context, LiteralCollectionExpression semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
@@ -4181,17 +4181,17 @@
 	 *         )* 
 	 *         name=ESIdentifier 
 	 *         unrestrictedName=UnrestrictedName? 
-	 *         function+=Function? 
+	 *         buffer+=Buffer? 
 	 *         (
 	 *             (
 	 *                 port+=Port | 
 	 *                 signal+=Signal | 
-	 *                 buffer+=Buffer | 
 	 *                 channel+=Channel | 
 	 *                 typedef+=TypeDefinition | 
+	 *                 function+=Function | 
 	 *                 variable+=Variable
 	 *             )? 
-	 *             function+=Function?
+	 *             buffer+=Buffer?
 	 *         )* 
 	 *         (
 	 *             port+=Port | 
@@ -4223,11 +4223,11 @@
 	 *             function+=FunctionPrivate | 
 	 *             variable+=VariablePrivate
 	 *         )* 
-	 *         ((procedure+=Procedure? (routine+=Routine? procedure+=Procedure?)*) | (routine+=Routine? (procedure+=Procedure? routine+=Routine?)*)) 
+	 *         ((procedure+=Procedure? (routine+=Routine? procedure+=Procedure?)*) | (procedure+=Procedure? (routine+=Routine? procedure+=Procedure?)*)) 
 	 *         machine+=AnyMachineBlock? 
 	 *         ((machine+=AnyMachineBlock | instance+=InstanceMachine | machine+=AnyMachineBlock | instance+=InstanceMachine)? machine+=AnyMachineBlock?)* 
-	 *         behavior+=Statemachine? 
-	 *         (behavior+=Behavior? behavior+=Statemachine?)* 
+	 *         behavior+=Behavior? 
+	 *         (behavior+=Statemachine? behavior+=Behavior?)* 
 	 *         main=MoeBehavior
 	 *     )
 	 */
@@ -4255,7 +4255,7 @@
 	 *     MixTupleExpressionList returns MixTupleExpression
 	 *
 	 * Constraint:
-	 *     ((value+=Expression | value+=NamedExpression) value+=NamedExpression? (value+=Expression? value+=NamedExpression?)*)
+	 *     ((value+=Expression | value+=NamedExpression) value+=Expression? (value+=NamedExpression? value+=Expression?)*)
 	 */
 	protected void sequence_MixTupleExpressionList(ISerializationContext context, MixTupleExpression semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
@@ -5460,39 +5460,39 @@
 	 *         unrestrictedName=UnrestrictedName? 
 	 *         (
 	 *             (
-	 *                 parameter+=ParameterOutput? 
+	 *                 parameter+=ParameterInout? 
 	 *                 (
 	 *                     (
 	 *                         parameter+=ParameterInput | 
 	 *                         parameter+=ParameterInput | 
 	 *                         parameter+=ParameterInout | 
-	 *                         parameter+=ParameterInout | 
+	 *                         parameter+=ParameterOutput | 
 	 *                         parameter+=ParameterOutput | 
 	 *                         parameter+=ParameterReturn | 
 	 *                         parameter+=ParameterReturn
 	 *                     )? 
-	 *                     parameter+=ParameterOutput?
+	 *                     parameter+=ParameterInout?
 	 *                 )*
 	 *             ) | 
 	 *             (
-	 *                 port+=Port? 
+	 *                 variable+=Variable? 
 	 *                 (
 	 *                     (
+	 *                         port+=Port | 
 	 *                         signal+=Signal | 
 	 *                         buffer+=Buffer | 
 	 *                         channel+=Channel | 
 	 *                         typedef+=TypeDefinition | 
-	 *                         function+=Function | 
-	 *                         variable+=Variable
+	 *                         function+=Function
 	 *                     )? 
-	 *                     port+=Port?
+	 *                     variable+=Variable?
 	 *                 )*
 	 *             )
 	 *         ) 
 	 *         parameter+=ParameterInput? 
 	 *         ((parameter+=ParameterInout | parameter+=ParameterOutput | parameter+=ParameterReturn)? parameter+=ParameterInput?)* 
 	 *         (
-	 *             channel+=ChannelPublic? 
+	 *             channel+=ChannelProtected? 
 	 *             (
 	 *                 port+=Port | 
 	 *                 signal+=Signal | 
@@ -5504,13 +5504,13 @@
 	 *                 port+=PortPublic | 
 	 *                 signal+=SignalPublic | 
 	 *                 buffer+=BufferPublic | 
+	 *                 channel+=ChannelPublic | 
 	 *                 typedef+=TypeDefinition | 
 	 *                 function+=FunctionPublic | 
 	 *                 variable+=VariablePublic | 
 	 *                 port+=PortProtected | 
 	 *                 signal+=SignalProtected | 
 	 *                 buffer+=BufferProtected | 
-	 *                 channel+=ChannelProtected | 
 	 *                 typedef+=TypeDefinition | 
 	 *                 function+=FunctionProtected | 
 	 *                 variable+=VariableProtected | 
@@ -5525,21 +5525,21 @@
 	 *         )* 
 	 *         (
 	 *             (
-	 *                 channel+=ChannelPublic? 
-	 *                 (routine+=Routine? procedure+=Procedure?)* 
-	 *                 routine+=Routine? 
+	 *                 channel+=ChannelProtected? 
+	 *                 (procedure+=Procedure? routine+=Routine?)* 
+	 *                 procedure+=Procedure? 
 	 *                 (region+=StatemachineRegion | region+=StatemachineNamedRegion+ | region+=StatemachineRegionLite)?
 	 *             ) | 
 	 *             (
-	 *                 channel+=ChannelPublic? 
+	 *                 channel+=ChannelProtected? 
 	 *                 (routine+=Routine? procedure+=Procedure?)* 
 	 *                 routine+=Routine? 
 	 *                 (region+=StatemachineRegion | region+=StatemachineNamedRegion+ | region+=StatemachineRegionLite)?
 	 *             ) | 
 	 *             (
 	 *                 (
-	 *                     (channel+=ChannelPublic? (routine+=Routine? procedure+=Procedure?)* routine+=Routine? machine+=AnyMachineBlock?) | 
-	 *                     (channel+=ChannelPublic? (routine+=Routine? procedure+=Procedure?)* routine+=Routine? machine+=AnyMachineBlock?)
+	 *                     (channel+=ChannelProtected? (procedure+=Procedure? routine+=Routine?)* procedure+=Procedure? machine+=AnyMachineBlock?) | 
+	 *                     (channel+=ChannelProtected? (routine+=Routine? procedure+=Procedure?)* routine+=Routine? machine+=AnyMachineBlock?)
 	 *                 ) 
 	 *                 ((machine+=Statemachine | machine+=AnyMachineBlock | machine+=AnyMachineBlock | instance+=InstanceMachine)? machine+=AnyMachineBlock?)*
 	 *             )
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSyntacticSequencer.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSyntacticSequencer.java
index 88cf0e6..d3503c5 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSyntacticSequencer.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/serializer/FormalMLSyntacticSequencer.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.serializer;
 
@@ -108,8 +108,8 @@
 	protected AbstractElementAlias match_MachineBlock_ExecutableKeyword_1_1_or_MachineKeyword_1_0;
 	protected AbstractElementAlias match_MachineBlock_InstanceKeyword_9_3_0_q;
 	protected AbstractElementAlias match_MachineBlock_MacroKeyword_8_0_0_0_1_or_RoutineKeyword_8_0_0_0_0;
-	protected AbstractElementAlias match_MachineBlock_ModelKeyword_9_1_0_q;
 	protected AbstractElementAlias match_MachineBlock_ProcedureKeyword_8_0_1_0_q;
+	protected AbstractElementAlias match_MachineBlock_PrototypeKeyword_9_2_0_q;
 	protected AbstractElementAlias match_MachineBlock_StatemachineKeyword_10_1_0_q;
 	protected AbstractElementAlias match_MachineBlock___InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a;
 	protected AbstractElementAlias match_MachineBlock___LessThanSignKeyword_2_0___MocKeyword_2_1_0_q_ModelOfComputationKingParserRuleCall_2_1_1__q___InstanceKeyword_2_2_0_LeftSquareBracketKeyword_2_2_1___AsteriskKeyword_2_2_2_1_or_PlusSignKeyword_2_2_2_0_or___InitKeyword_2_2_2_2_0_EIntegerParserRuleCall_2_2_2_2_1_MaxKeyword_2_2_2_2_2_EIntegerParserRuleCall_2_2_2_2_3_____RightSquareBracketKeyword_2_2_3__q_GreaterThanSignKeyword_2_3__q;
@@ -117,10 +117,10 @@
 	protected AbstractElementAlias match_MachineBlock___PrivateKeyword_7_3_0_or_PropertyKeyword_7_0_0_or_ProtectedKeyword_7_2_0_or_PublicKeyword_7_1_0__a;
 	protected AbstractElementAlias match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__a_PrototypeKeyword_9_2_0__a;
 	protected AbstractElementAlias match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__a_PrototypeKeyword_9_2_0__p;
+	protected AbstractElementAlias match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__q_PrototypeKeyword_9_2_0_q__a;
 	protected AbstractElementAlias match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a___CompositeKeyword_9_0_0_0_or_MachineKeyword_9_0_0_1____q;
 	protected AbstractElementAlias match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__a;
 	protected AbstractElementAlias match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__p;
-	protected AbstractElementAlias match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__q_ModelKeyword_9_1_0_q__a;
 	protected AbstractElementAlias match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a_InstanceKeyword_9_3_0__a;
 	protected AbstractElementAlias match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a_InstanceKeyword_9_3_0__p;
 	protected AbstractElementAlias match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__q_InstanceKeyword_9_3_0_q__a;
@@ -231,11 +231,11 @@
 	protected AbstractElementAlias match_Statemachine_MacroKeyword_10_0_0_0_1_or_RoutineKeyword_10_0_0_0_0;
 	protected AbstractElementAlias match_Statemachine_ParameterKeyword_7_0_0_q;
 	protected AbstractElementAlias match_Statemachine_ProcedureKeyword_10_0_1_0_q;
-	protected AbstractElementAlias match_Statemachine_PropertyKeyword_9_0_0_q;
+	protected AbstractElementAlias match_Statemachine_ProtectedKeyword_9_2_0_q;
 	protected AbstractElementAlias match_Statemachine_PublicKeyword_9_1_0_q;
-	protected AbstractElementAlias match_Statemachine_ReturnKeyword_8_3_0_q;
 	protected AbstractElementAlias match_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a;
 	protected AbstractElementAlias match_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__p;
+	protected AbstractElementAlias match_Statemachine___InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0_or_ReturnKeyword_8_3_0__a;
 	protected AbstractElementAlias match_Statemachine___LessThanSignKeyword_3_0_MocKeyword_3_1_q_ModelOfComputationKingParserRuleCall_3_2_GreaterThanSignKeyword_3_3__q;
 	protected AbstractElementAlias match_Statemachine___MacroKeyword_10_0_0_0_1_or_RoutineKeyword_10_0_0_0_0__q;
 	protected AbstractElementAlias match_Statemachine___PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a;
@@ -252,7 +252,6 @@
 	protected AbstractElementAlias match_Statemachine_____CompositeKeyword_11_0_1_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a_InstanceKeyword_11_0_4_0__p;
 	protected AbstractElementAlias match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__a_ReturnKeyword_8_3_0__a;
 	protected AbstractElementAlias match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__a_ReturnKeyword_8_3_0__p;
-	protected AbstractElementAlias match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__q_ReturnKeyword_8_3_0_q__a;
 	protected AbstractElementAlias match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_ReturnKeyword_8_3_0__a_OutputKeyword_8_2_0__a;
 	protected AbstractElementAlias match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_ReturnKeyword_8_3_0__a_OutputKeyword_8_2_0__p;
 	protected AbstractElementAlias match_Statemachine_____InoutKeyword_8_1_0_or_OutputKeyword_8_2_0_or_ReturnKeyword_8_3_0__a_InputKeyword_8_0_0__a;
@@ -267,9 +266,9 @@
 	protected AbstractElementAlias match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0__q_PublicKeyword_9_1_0_q__a;
 	protected AbstractElementAlias match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__a_ProtectedKeyword_9_2_0__a;
 	protected AbstractElementAlias match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__a_ProtectedKeyword_9_2_0__p;
+	protected AbstractElementAlias match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__q_ProtectedKeyword_9_2_0_q__a;
 	protected AbstractElementAlias match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__a;
 	protected AbstractElementAlias match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__p;
-	protected AbstractElementAlias match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__q_PropertyKeyword_9_0_0_q__a;
 	protected AbstractElementAlias match_Statemachine_____PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PrivateKeyword_9_3_0__a;
 	protected AbstractElementAlias match_Statemachine_____PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PrivateKeyword_9_3_0__p;
 	protected AbstractElementAlias match_StructureTypeDefinitionImpl_PropertyKeyword_5_q;
@@ -403,8 +402,8 @@
 		match_MachineBlock_ExecutableKeyword_1_1_or_MachineKeyword_1_0 = new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getExecutableKeyword_1_1()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getMachineKeyword_1_0()));
 		match_MachineBlock_InstanceKeyword_9_3_0_q = new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0());
 		match_MachineBlock_MacroKeyword_8_0_0_0_1_or_RoutineKeyword_8_0_0_0_0 = new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getMacroKeyword_8_0_0_0_1()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getRoutineKeyword_8_0_0_0_0()));
-		match_MachineBlock_ModelKeyword_9_1_0_q = new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0());
 		match_MachineBlock_ProcedureKeyword_8_0_1_0_q = new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getProcedureKeyword_8_0_1_0());
+		match_MachineBlock_PrototypeKeyword_9_2_0_q = new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0());
 		match_MachineBlock_StatemachineKeyword_10_1_0_q = new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getStatemachineKeyword_10_1_0());
 		match_MachineBlock___InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0()));
 		match_MachineBlock___LessThanSignKeyword_2_0___MocKeyword_2_1_0_q_ModelOfComputationKingParserRuleCall_2_1_1__q___InstanceKeyword_2_2_0_LeftSquareBracketKeyword_2_2_1___AsteriskKeyword_2_2_2_1_or_PlusSignKeyword_2_2_2_0_or___InitKeyword_2_2_2_2_0_EIntegerParserRuleCall_2_2_2_2_1_MaxKeyword_2_2_2_2_2_EIntegerParserRuleCall_2_2_2_2_3_____RightSquareBracketKeyword_2_2_3__q_GreaterThanSignKeyword_2_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getLessThanSignKeyword_2_0()), new GroupAlias(false, true, new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getMocKeyword_2_1_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelOfComputationKingParserRuleCall_2_1_1())), new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_2_2_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getLeftSquareBracketKeyword_2_2_1()), new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInitKeyword_2_2_2_2_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getEIntegerParserRuleCall_2_2_2_2_1()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getMaxKeyword_2_2_2_2_2()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getEIntegerParserRuleCall_2_2_2_2_3())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getAsteriskKeyword_2_2_2_1()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPlusSignKeyword_2_2_2_0())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getRightSquareBracketKeyword_2_2_3())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getGreaterThanSignKeyword_2_3()));
@@ -412,10 +411,10 @@
 		match_MachineBlock___PrivateKeyword_7_3_0_or_PropertyKeyword_7_0_0_or_ProtectedKeyword_7_2_0_or_PublicKeyword_7_1_0__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrivateKeyword_7_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPropertyKeyword_7_0_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getProtectedKeyword_7_2_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPublicKeyword_7_1_0()));
 		match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__a_PrototypeKeyword_9_2_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0()));
 		match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__a_PrototypeKeyword_9_2_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0()));
+		match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__q_PrototypeKeyword_9_2_0_q__a = new GroupAlias(true, true, new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0())), new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0()));
 		match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a___CompositeKeyword_9_0_0_0_or_MachineKeyword_9_0_0_1____q = new GroupAlias(false, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0())), new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getCompositeKeyword_9_0_0_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getMachineKeyword_9_0_0_1())));
 		match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()));
 		match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()));
-		match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__q_ModelKeyword_9_1_0_q__a = new GroupAlias(true, true, new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0())), new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()));
 		match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a_InstanceKeyword_9_3_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()));
 		match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a_InstanceKeyword_9_3_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0())), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()));
 		match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__q_InstanceKeyword_9_3_0_q__a = new GroupAlias(true, true, new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getModelKeyword_9_1_0()), new TokenAlias(false, false, grammarAccess.getMachineBlockAccess().getPrototypeKeyword_9_2_0())), new TokenAlias(false, true, grammarAccess.getMachineBlockAccess().getInstanceKeyword_9_3_0()));
@@ -526,11 +525,11 @@
 		match_Statemachine_MacroKeyword_10_0_0_0_1_or_RoutineKeyword_10_0_0_0_0 = new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getMacroKeyword_10_0_0_0_1()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getRoutineKeyword_10_0_0_0_0()));
 		match_Statemachine_ParameterKeyword_7_0_0_q = new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getParameterKeyword_7_0_0());
 		match_Statemachine_ProcedureKeyword_10_0_1_0_q = new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getProcedureKeyword_10_0_1_0());
-		match_Statemachine_PropertyKeyword_9_0_0_q = new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0());
+		match_Statemachine_ProtectedKeyword_9_2_0_q = new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0());
 		match_Statemachine_PublicKeyword_9_1_0_q = new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0());
-		match_Statemachine_ReturnKeyword_8_3_0_q = new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0());
 		match_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getCompositeKeyword_11_0_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInstanceKeyword_11_0_4_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getModelKeyword_11_0_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrototypeKeyword_11_0_3_0()));
 		match_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__p = new AlternativeAlias(true, false, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getCompositeKeyword_11_0_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInstanceKeyword_11_0_4_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getModelKeyword_11_0_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrototypeKeyword_11_0_3_0()));
+		match_Statemachine___InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0_or_ReturnKeyword_8_3_0__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInoutKeyword_8_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInputKeyword_8_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getOutputKeyword_8_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0()));
 		match_Statemachine___LessThanSignKeyword_3_0_MocKeyword_3_1_q_ModelOfComputationKingParserRuleCall_3_2_GreaterThanSignKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getLessThanSignKeyword_3_0()), new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getMocKeyword_3_1()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getModelOfComputationKingParserRuleCall_3_2()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getGreaterThanSignKeyword_3_3()));
 		match_Statemachine___MacroKeyword_10_0_0_0_1_or_RoutineKeyword_10_0_0_0_0__q = new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getMacroKeyword_10_0_0_0_1()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getRoutineKeyword_10_0_0_0_0()));
 		match_Statemachine___PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0()));
@@ -547,7 +546,6 @@
 		match_Statemachine_____CompositeKeyword_11_0_1_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a_InstanceKeyword_11_0_4_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getCompositeKeyword_11_0_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getModelKeyword_11_0_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrototypeKeyword_11_0_3_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInstanceKeyword_11_0_4_0()));
 		match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__a_ReturnKeyword_8_3_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInoutKeyword_8_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInputKeyword_8_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getOutputKeyword_8_2_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0()));
 		match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__a_ReturnKeyword_8_3_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInoutKeyword_8_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInputKeyword_8_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getOutputKeyword_8_2_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0()));
-		match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__q_ReturnKeyword_8_3_0_q__a = new GroupAlias(true, true, new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInoutKeyword_8_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInputKeyword_8_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getOutputKeyword_8_2_0())), new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0()));
 		match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_ReturnKeyword_8_3_0__a_OutputKeyword_8_2_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInoutKeyword_8_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInputKeyword_8_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getOutputKeyword_8_2_0()));
 		match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_ReturnKeyword_8_3_0__a_OutputKeyword_8_2_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInoutKeyword_8_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInputKeyword_8_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getOutputKeyword_8_2_0()));
 		match_Statemachine_____InoutKeyword_8_1_0_or_OutputKeyword_8_2_0_or_ReturnKeyword_8_3_0__a_InputKeyword_8_0_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInoutKeyword_8_1_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getOutputKeyword_8_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getReturnKeyword_8_3_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getInputKeyword_8_0_0()));
@@ -562,9 +560,9 @@
 		match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0__q_PublicKeyword_9_1_0_q__a = new GroupAlias(true, true, new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0())), new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0()));
 		match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__a_ProtectedKeyword_9_2_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()));
 		match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__a_ProtectedKeyword_9_2_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()));
+		match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__q_ProtectedKeyword_9_2_0_q__a = new GroupAlias(true, true, new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()));
 		match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()));
 		match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()));
-		match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__q_PropertyKeyword_9_0_0_q__a = new GroupAlias(true, true, new AlternativeAlias(false, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, true, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()));
 		match_Statemachine_____PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PrivateKeyword_9_3_0__a = new GroupAlias(true, true, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()));
 		match_Statemachine_____PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PrivateKeyword_9_3_0__p = new GroupAlias(true, false, new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPropertyKeyword_9_0_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getProtectedKeyword_9_2_0()), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPublicKeyword_9_1_0())), new TokenAlias(false, false, grammarAccess.getStatemachineAccess().getPrivateKeyword_9_3_0()));
 		match_StructureTypeDefinitionImpl_PropertyKeyword_5_q = new TokenAlias(false, true, grammarAccess.getStructureTypeDefinitionImplAccess().getPropertyKeyword_5());
@@ -860,10 +858,10 @@
 				emit_MachineBlock_InstanceKeyword_9_3_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_MacroKeyword_8_0_0_0_1_or_RoutineKeyword_8_0_0_0_0.equals(syntax))
 				emit_MachineBlock_MacroKeyword_8_0_0_0_1_or_RoutineKeyword_8_0_0_0_0(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if (match_MachineBlock_ModelKeyword_9_1_0_q.equals(syntax))
-				emit_MachineBlock_ModelKeyword_9_1_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_ProcedureKeyword_8_0_1_0_q.equals(syntax))
 				emit_MachineBlock_ProcedureKeyword_8_0_1_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_MachineBlock_PrototypeKeyword_9_2_0_q.equals(syntax))
+				emit_MachineBlock_PrototypeKeyword_9_2_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_StatemachineKeyword_10_1_0_q.equals(syntax))
 				emit_MachineBlock_StatemachineKeyword_10_1_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock___InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a.equals(syntax))
@@ -878,14 +876,14 @@
 				emit_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__a_PrototypeKeyword_9_2_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__a_PrototypeKeyword_9_2_0__p.equals(syntax))
 				emit_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__a_PrototypeKeyword_9_2_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__q_PrototypeKeyword_9_2_0_q__a.equals(syntax))
+				emit_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__q_PrototypeKeyword_9_2_0_q__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a___CompositeKeyword_9_0_0_0_or_MachineKeyword_9_0_0_1____q.equals(syntax))
 				emit_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a___CompositeKeyword_9_0_0_0_or_MachineKeyword_9_0_0_1____q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__a.equals(syntax))
 				emit_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__p.equals(syntax))
 				emit_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__a_ModelKeyword_9_1_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if (match_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__q_ModelKeyword_9_1_0_q__a.equals(syntax))
-				emit_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__q_ModelKeyword_9_1_0_q__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a_InstanceKeyword_9_3_0__a.equals(syntax))
 				emit_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a_InstanceKeyword_9_3_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_MachineBlock_____ModelKeyword_9_1_0_or_PrototypeKeyword_9_2_0__a_InstanceKeyword_9_3_0__p.equals(syntax))
@@ -1106,16 +1104,16 @@
 				emit_Statemachine_ParameterKeyword_7_0_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_ProcedureKeyword_10_0_1_0_q.equals(syntax))
 				emit_Statemachine_ProcedureKeyword_10_0_1_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if (match_Statemachine_PropertyKeyword_9_0_0_q.equals(syntax))
-				emit_Statemachine_PropertyKeyword_9_0_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_Statemachine_ProtectedKeyword_9_2_0_q.equals(syntax))
+				emit_Statemachine_ProtectedKeyword_9_2_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_PublicKeyword_9_1_0_q.equals(syntax))
 				emit_Statemachine_PublicKeyword_9_1_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if (match_Statemachine_ReturnKeyword_8_3_0_q.equals(syntax))
-				emit_Statemachine_ReturnKeyword_8_3_0_q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a.equals(syntax))
 				emit_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__p.equals(syntax))
 				emit_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_Statemachine___InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0_or_ReturnKeyword_8_3_0__a.equals(syntax))
+				emit_Statemachine___InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0_or_ReturnKeyword_8_3_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine___LessThanSignKeyword_3_0_MocKeyword_3_1_q_ModelOfComputationKingParserRuleCall_3_2_GreaterThanSignKeyword_3_3__q.equals(syntax))
 				emit_Statemachine___LessThanSignKeyword_3_0_MocKeyword_3_1_q_ModelOfComputationKingParserRuleCall_3_2_GreaterThanSignKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine___MacroKeyword_10_0_0_0_1_or_RoutineKeyword_10_0_0_0_0__q.equals(syntax))
@@ -1148,8 +1146,6 @@
 				emit_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__a_ReturnKeyword_8_3_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__a_ReturnKeyword_8_3_0__p.equals(syntax))
 				emit_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__a_ReturnKeyword_8_3_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if (match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__q_ReturnKeyword_8_3_0_q__a.equals(syntax))
-				emit_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__q_ReturnKeyword_8_3_0_q__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_ReturnKeyword_8_3_0__a_OutputKeyword_8_2_0__a.equals(syntax))
 				emit_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_ReturnKeyword_8_3_0__a_OutputKeyword_8_2_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_ReturnKeyword_8_3_0__a_OutputKeyword_8_2_0__p.equals(syntax))
@@ -1178,12 +1174,12 @@
 				emit_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__a_ProtectedKeyword_9_2_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__a_ProtectedKeyword_9_2_0__p.equals(syntax))
 				emit_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__a_ProtectedKeyword_9_2_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__q_ProtectedKeyword_9_2_0_q__a.equals(syntax))
+				emit_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__q_ProtectedKeyword_9_2_0_q__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__a.equals(syntax))
 				emit_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__p.equals(syntax))
 				emit_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PropertyKeyword_9_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if (match_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__q_PropertyKeyword_9_0_0_q__a.equals(syntax))
-				emit_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__q_PropertyKeyword_9_0_0_q__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PrivateKeyword_9_3_0__a.equals(syntax))
 				emit_Statemachine_____PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PrivateKeyword_9_3_0__a(semanticObject, getLastNavigableState(), syntaxNodes);
 			else if (match_Statemachine_____PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__a_PrivateKeyword_9_3_0__p.equals(syntax))
@@ -2719,43 +2715,6 @@
 	
 	/**
 	 * Ambiguous syntax:
-	 *     '@model:'?
-	 *
-	 * This ambiguous syntax occurs at:
-	 *     buffer+=Buffer ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     buffer+=BufferPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     buffer+=BufferProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     buffer+=BufferPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     channel+=Channel ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     channel+=ChannelPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     channel+=ChannelProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     channel+=ChannelPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     function+=Function ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     function+=FunctionPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     function+=FunctionProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     function+=FunctionPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     name=ESIdentifier '{' ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     port+=Port ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     port+=PortPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     port+=PortProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     port+=PortPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     signal+=Signal ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     signal+=SignalPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     signal+=SignalProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     signal+=SignalPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     typedef+=TypeDefinition ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     unrestrictedName=UnrestrictedName '{' ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     variable+=Variable ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     variable+=VariablePrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     variable+=VariableProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 *     variable+=VariablePublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@prototype:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
-	 */
-	protected void emit_MachineBlock_ModelKeyword_9_1_0_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
-		acceptNodes(transition, nodes);
-	}
-	
-	/**
-	 * Ambiguous syntax:
 	 *     '@procedure:'?
 	 *
 	 * This ambiguous syntax occurs at:
@@ -2767,6 +2726,43 @@
 	
 	/**
 	 * Ambiguous syntax:
+	 *     '@prototype:'?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     buffer+=Buffer ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     buffer+=BufferPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     buffer+=BufferProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     buffer+=BufferPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     channel+=Channel ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     channel+=ChannelPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     channel+=ChannelProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     channel+=ChannelPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     function+=Function ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     function+=FunctionPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     function+=FunctionProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     function+=FunctionPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     name=ESIdentifier '{' ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     port+=Port ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     port+=PortPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     port+=PortProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     port+=PortPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     signal+=Signal ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     signal+=SignalPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     signal+=SignalProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     signal+=SignalPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     typedef+=TypeDefinition ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     unrestrictedName=UnrestrictedName '{' ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     variable+=Variable ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     variable+=VariablePrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     variable+=VariableProtected ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 *     variable+=VariablePublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) (('@model:' | '@instance:')? (ambiguity))* '@instance:' instance+=InstanceMachine
+	 */
+	protected void emit_MachineBlock_PrototypeKeyword_9_2_0_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Ambiguous syntax:
 	 *     '@statemachine:'?
 	 *
 	 * This ambiguous syntax occurs at:
@@ -2847,8 +2843,8 @@
 	 *     buffer+=Buffer (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     buffer+=Buffer (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     buffer+=Buffer (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     buffer+=Buffer (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=Buffer (ambiguity) '@procedure:' procedure+=Procedure
+	 *     buffer+=Buffer (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=Buffer (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     buffer+=Buffer (ambiguity) procedure+=Procedure
 	 *     buffer+=Buffer (ambiguity) routine+=Routine
@@ -2859,8 +2855,8 @@
 	 *     buffer+=BufferPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     buffer+=BufferPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     buffer+=BufferPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     buffer+=BufferPrivate (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=BufferPrivate (ambiguity) '@procedure:' procedure+=Procedure
+	 *     buffer+=BufferPrivate (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=BufferPrivate (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     buffer+=BufferPrivate (ambiguity) procedure+=Procedure
 	 *     buffer+=BufferPrivate (ambiguity) routine+=Routine
@@ -2871,8 +2867,8 @@
 	 *     buffer+=BufferProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     buffer+=BufferProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     buffer+=BufferProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     buffer+=BufferProtected (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=BufferProtected (ambiguity) '@procedure:' procedure+=Procedure
+	 *     buffer+=BufferProtected (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=BufferProtected (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     buffer+=BufferProtected (ambiguity) procedure+=Procedure
 	 *     buffer+=BufferProtected (ambiguity) routine+=Routine
@@ -2883,8 +2879,8 @@
 	 *     buffer+=BufferPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     buffer+=BufferPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     buffer+=BufferPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     buffer+=BufferPublic (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=BufferPublic (ambiguity) '@procedure:' procedure+=Procedure
+	 *     buffer+=BufferPublic (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     buffer+=BufferPublic (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     buffer+=BufferPublic (ambiguity) procedure+=Procedure
 	 *     buffer+=BufferPublic (ambiguity) routine+=Routine
@@ -2895,8 +2891,8 @@
 	 *     channel+=Channel (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     channel+=Channel (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     channel+=Channel (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     channel+=Channel (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=Channel (ambiguity) '@procedure:' procedure+=Procedure
+	 *     channel+=Channel (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=Channel (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     channel+=Channel (ambiguity) procedure+=Procedure
 	 *     channel+=Channel (ambiguity) routine+=Routine
@@ -2907,8 +2903,8 @@
 	 *     channel+=ChannelPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     channel+=ChannelPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     channel+=ChannelPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     channel+=ChannelPrivate (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=ChannelPrivate (ambiguity) '@procedure:' procedure+=Procedure
+	 *     channel+=ChannelPrivate (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=ChannelPrivate (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     channel+=ChannelPrivate (ambiguity) procedure+=Procedure
 	 *     channel+=ChannelPrivate (ambiguity) routine+=Routine
@@ -2919,8 +2915,8 @@
 	 *     channel+=ChannelProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     channel+=ChannelProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     channel+=ChannelProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     channel+=ChannelProtected (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=ChannelProtected (ambiguity) '@procedure:' procedure+=Procedure
+	 *     channel+=ChannelProtected (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=ChannelProtected (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     channel+=ChannelProtected (ambiguity) procedure+=Procedure
 	 *     channel+=ChannelProtected (ambiguity) routine+=Routine
@@ -2931,8 +2927,8 @@
 	 *     channel+=ChannelPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     channel+=ChannelPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     channel+=ChannelPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     channel+=ChannelPublic (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=ChannelPublic (ambiguity) '@procedure:' procedure+=Procedure
+	 *     channel+=ChannelPublic (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     channel+=ChannelPublic (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     channel+=ChannelPublic (ambiguity) procedure+=Procedure
 	 *     channel+=ChannelPublic (ambiguity) routine+=Routine
@@ -2943,8 +2939,8 @@
 	 *     function+=Function (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     function+=Function (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     function+=Function (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     function+=Function (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=Function (ambiguity) '@procedure:' procedure+=Procedure
+	 *     function+=Function (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=Function (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     function+=Function (ambiguity) procedure+=Procedure
 	 *     function+=Function (ambiguity) routine+=Routine
@@ -2955,8 +2951,8 @@
 	 *     function+=FunctionPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     function+=FunctionPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     function+=FunctionPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     function+=FunctionPrivate (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=FunctionPrivate (ambiguity) '@procedure:' procedure+=Procedure
+	 *     function+=FunctionPrivate (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=FunctionPrivate (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     function+=FunctionPrivate (ambiguity) procedure+=Procedure
 	 *     function+=FunctionPrivate (ambiguity) routine+=Routine
@@ -2967,8 +2963,8 @@
 	 *     function+=FunctionProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     function+=FunctionProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     function+=FunctionProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     function+=FunctionProtected (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=FunctionProtected (ambiguity) '@procedure:' procedure+=Procedure
+	 *     function+=FunctionProtected (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=FunctionProtected (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     function+=FunctionProtected (ambiguity) procedure+=Procedure
 	 *     function+=FunctionProtected (ambiguity) routine+=Routine
@@ -2979,8 +2975,8 @@
 	 *     function+=FunctionPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     function+=FunctionPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     function+=FunctionPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     function+=FunctionPublic (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=FunctionPublic (ambiguity) '@procedure:' procedure+=Procedure
+	 *     function+=FunctionPublic (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     function+=FunctionPublic (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     function+=FunctionPublic (ambiguity) procedure+=Procedure
 	 *     function+=FunctionPublic (ambiguity) routine+=Routine
@@ -2991,8 +2987,8 @@
 	 *     name=ESIdentifier '{' (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     name=ESIdentifier '{' (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     name=ESIdentifier '{' (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     name=ESIdentifier '{' (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     name=ESIdentifier '{' (ambiguity) '@procedure:' procedure+=Procedure
+	 *     name=ESIdentifier '{' (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     name=ESIdentifier '{' (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     name=ESIdentifier '{' (ambiguity) procedure+=Procedure
 	 *     name=ESIdentifier '{' (ambiguity) routine+=Routine
@@ -3003,8 +2999,8 @@
 	 *     port+=Port (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     port+=Port (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     port+=Port (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     port+=Port (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=Port (ambiguity) '@procedure:' procedure+=Procedure
+	 *     port+=Port (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=Port (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     port+=Port (ambiguity) procedure+=Procedure
 	 *     port+=Port (ambiguity) routine+=Routine
@@ -3015,8 +3011,8 @@
 	 *     port+=PortPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     port+=PortPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     port+=PortPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     port+=PortPrivate (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=PortPrivate (ambiguity) '@procedure:' procedure+=Procedure
+	 *     port+=PortPrivate (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=PortPrivate (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     port+=PortPrivate (ambiguity) procedure+=Procedure
 	 *     port+=PortPrivate (ambiguity) routine+=Routine
@@ -3027,8 +3023,8 @@
 	 *     port+=PortProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     port+=PortProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     port+=PortProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     port+=PortProtected (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=PortProtected (ambiguity) '@procedure:' procedure+=Procedure
+	 *     port+=PortProtected (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=PortProtected (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     port+=PortProtected (ambiguity) procedure+=Procedure
 	 *     port+=PortProtected (ambiguity) routine+=Routine
@@ -3039,8 +3035,8 @@
 	 *     port+=PortPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     port+=PortPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     port+=PortPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     port+=PortPublic (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=PortPublic (ambiguity) '@procedure:' procedure+=Procedure
+	 *     port+=PortPublic (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     port+=PortPublic (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     port+=PortPublic (ambiguity) procedure+=Procedure
 	 *     port+=PortPublic (ambiguity) routine+=Routine
@@ -3051,8 +3047,8 @@
 	 *     signal+=Signal (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     signal+=Signal (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     signal+=Signal (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     signal+=Signal (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=Signal (ambiguity) '@procedure:' procedure+=Procedure
+	 *     signal+=Signal (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=Signal (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     signal+=Signal (ambiguity) procedure+=Procedure
 	 *     signal+=Signal (ambiguity) routine+=Routine
@@ -3063,8 +3059,8 @@
 	 *     signal+=SignalPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     signal+=SignalPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     signal+=SignalPrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     signal+=SignalPrivate (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=SignalPrivate (ambiguity) '@procedure:' procedure+=Procedure
+	 *     signal+=SignalPrivate (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=SignalPrivate (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     signal+=SignalPrivate (ambiguity) procedure+=Procedure
 	 *     signal+=SignalPrivate (ambiguity) routine+=Routine
@@ -3075,8 +3071,8 @@
 	 *     signal+=SignalProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     signal+=SignalProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     signal+=SignalProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     signal+=SignalProtected (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=SignalProtected (ambiguity) '@procedure:' procedure+=Procedure
+	 *     signal+=SignalProtected (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=SignalProtected (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     signal+=SignalProtected (ambiguity) procedure+=Procedure
 	 *     signal+=SignalProtected (ambiguity) routine+=Routine
@@ -3087,8 +3083,8 @@
 	 *     signal+=SignalPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     signal+=SignalPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     signal+=SignalPublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     signal+=SignalPublic (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=SignalPublic (ambiguity) '@procedure:' procedure+=Procedure
+	 *     signal+=SignalPublic (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     signal+=SignalPublic (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     signal+=SignalPublic (ambiguity) procedure+=Procedure
 	 *     signal+=SignalPublic (ambiguity) routine+=Routine
@@ -3099,8 +3095,8 @@
 	 *     typedef+=TypeDefinition (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     typedef+=TypeDefinition (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     typedef+=TypeDefinition (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     typedef+=TypeDefinition (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     typedef+=TypeDefinition (ambiguity) '@procedure:' procedure+=Procedure
+	 *     typedef+=TypeDefinition (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     typedef+=TypeDefinition (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     typedef+=TypeDefinition (ambiguity) procedure+=Procedure
 	 *     typedef+=TypeDefinition (ambiguity) routine+=Routine
@@ -3111,8 +3107,8 @@
 	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) '@procedure:' procedure+=Procedure
+	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) procedure+=Procedure
 	 *     unrestrictedName=UnrestrictedName '{' (ambiguity) routine+=Routine
@@ -3123,8 +3119,8 @@
 	 *     variable+=Variable (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     variable+=Variable (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     variable+=Variable (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     variable+=Variable (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=Variable (ambiguity) '@procedure:' procedure+=Procedure
+	 *     variable+=Variable (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=Variable (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     variable+=Variable (ambiguity) procedure+=Procedure
 	 *     variable+=Variable (ambiguity) routine+=Routine
@@ -3135,8 +3131,8 @@
 	 *     variable+=VariablePrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     variable+=VariablePrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     variable+=VariablePrivate (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     variable+=VariablePrivate (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=VariablePrivate (ambiguity) '@procedure:' procedure+=Procedure
+	 *     variable+=VariablePrivate (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=VariablePrivate (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     variable+=VariablePrivate (ambiguity) procedure+=Procedure
 	 *     variable+=VariablePrivate (ambiguity) routine+=Routine
@@ -3147,8 +3143,8 @@
 	 *     variable+=VariableProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     variable+=VariableProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     variable+=VariableProtected (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     variable+=VariableProtected (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=VariableProtected (ambiguity) '@procedure:' procedure+=Procedure
+	 *     variable+=VariableProtected (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=VariableProtected (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     variable+=VariableProtected (ambiguity) procedure+=Procedure
 	 *     variable+=VariableProtected (ambiguity) routine+=Routine
@@ -3159,8 +3155,8 @@
 	 *     variable+=VariablePublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') instance+=InstanceMachine
 	 *     variable+=VariablePublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* ('@composite:' | '@machine:') machine+=AnyMachineBlock
 	 *     variable+=VariablePublic (ambiguity) '@instance:'? (('@model:' | '@prototype:')? '@instance:'?)* main=MoeBehavior
-	 *     variable+=VariablePublic (ambiguity) '@model:'? (('@prototype:' | '@instance:')? '@model:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=VariablePublic (ambiguity) '@procedure:' procedure+=Procedure
+	 *     variable+=VariablePublic (ambiguity) '@prototype:'? (('@model:' | '@instance:')? '@prototype:'?)* '@instance:' instance+=InstanceMachine
 	 *     variable+=VariablePublic (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     variable+=VariablePublic (ambiguity) procedure+=Procedure
 	 *     variable+=VariablePublic (ambiguity) routine+=Routine
@@ -3196,6 +3192,43 @@
 	
 	/**
 	 * Ambiguous syntax:
+	 *     (('@model:' | '@instance:')? '@prototype:'?)*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     buffer+=Buffer ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     buffer+=BufferPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     buffer+=BufferProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     buffer+=BufferPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     channel+=Channel ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     channel+=ChannelPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     channel+=ChannelProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     channel+=ChannelPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     function+=Function ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     function+=FunctionPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     function+=FunctionProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     function+=FunctionPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     name=ESIdentifier '{' ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     port+=Port ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     port+=PortPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     port+=PortProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     port+=PortPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     signal+=Signal ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     signal+=SignalPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     signal+=SignalProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     signal+=SignalPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     typedef+=TypeDefinition ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     unrestrictedName=UnrestrictedName '{' ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     variable+=Variable ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     variable+=VariablePrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     variable+=VariableProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 *     variable+=VariablePublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@prototype:'? (ambiguity) '@instance:' instance+=InstanceMachine
+	 */
+	protected void emit_MachineBlock_____InstanceKeyword_9_3_0_or_ModelKeyword_9_1_0__q_PrototypeKeyword_9_2_0_q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Ambiguous syntax:
 	 *     (('@model:' | '@prototype:' | '@instance:')* ('@composite:' | '@machine:'))?
 	 *
 	 * This ambiguous syntax occurs at:
@@ -3235,43 +3268,6 @@
 	
 	/**
 	 * Ambiguous syntax:
-	 *     (('@prototype:' | '@instance:')? '@model:'?)*
-	 *
-	 * This ambiguous syntax occurs at:
-	 *     buffer+=Buffer ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     buffer+=BufferPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     buffer+=BufferProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     buffer+=BufferPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     channel+=Channel ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     channel+=ChannelPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     channel+=ChannelProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     channel+=ChannelPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     function+=Function ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     function+=FunctionPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     function+=FunctionProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     function+=FunctionPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     name=ESIdentifier '{' ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     port+=Port ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     port+=PortPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     port+=PortProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     port+=PortPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     signal+=Signal ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     signal+=SignalPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     signal+=SignalProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     signal+=SignalPublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     typedef+=TypeDefinition ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     unrestrictedName=UnrestrictedName '{' ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     variable+=Variable ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     variable+=VariablePrivate ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     variable+=VariableProtected ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 *     variable+=VariablePublic ('@property:' | '@public:' | '@protected:' | '@private:')* '@model:'? (ambiguity) '@instance:' instance+=InstanceMachine
-	 */
-	protected void emit_MachineBlock_____InstanceKeyword_9_3_0_or_PrototypeKeyword_9_2_0__q_ModelKeyword_9_1_0_q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
-		acceptNodes(transition, nodes);
-	}
-	
-	/**
-	 * Ambiguous syntax:
 	 *     (('@model:' | '@prototype:')* '@instance:')*
 	 *
 	 * This ambiguous syntax occurs at:
@@ -12913,8 +12909,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -12923,8 +12919,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -12933,8 +12929,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -12942,8 +12938,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -12951,8 +12947,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -12960,8 +12956,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -12969,8 +12965,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -12978,8 +12974,8 @@
 	 *         buffer+=Buffer 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -12987,8 +12983,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -12997,8 +12993,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13007,8 +13003,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13016,8 +13012,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13025,8 +13021,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13034,8 +13030,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13043,8 +13039,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13052,8 +13048,8 @@
 	 *         channel+=Channel 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13061,8 +13057,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13071,8 +13067,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13081,8 +13077,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13090,8 +13086,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13099,8 +13095,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13108,8 +13104,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13117,8 +13113,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13126,8 +13122,8 @@
 	 *         function+=Function 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13137,8 +13133,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13149,8 +13145,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13161,8 +13157,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13172,8 +13168,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13183,8 +13179,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13194,8 +13190,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13205,8 +13201,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13216,8 +13212,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13226,8 +13222,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13237,8 +13233,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13248,8 +13244,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13258,8 +13254,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13268,8 +13264,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13278,8 +13274,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13288,8 +13284,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13298,8 +13294,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13307,8 +13303,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13317,8 +13313,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13327,8 +13323,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13336,8 +13332,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13345,8 +13341,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13354,8 +13350,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13363,8 +13359,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13372,8 +13368,8 @@
 	 *         parameter+=ParameterInout 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13382,8 +13378,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13393,8 +13389,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13404,8 +13400,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13414,8 +13410,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13424,8 +13420,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13434,8 +13430,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13444,8 +13440,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13454,8 +13450,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13463,8 +13459,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13473,8 +13469,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13483,8 +13479,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13492,8 +13488,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13501,8 +13497,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13510,8 +13506,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13519,8 +13515,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13528,8 +13524,8 @@
 	 *         parameter+=ParameterInput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13538,8 +13534,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13549,8 +13545,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13560,8 +13556,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13570,8 +13566,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13580,8 +13576,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13590,8 +13586,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13600,8 +13596,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13610,8 +13606,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13619,8 +13615,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13629,8 +13625,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13639,8 +13635,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13648,8 +13644,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13657,8 +13653,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13666,8 +13662,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13675,8 +13671,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13684,8 +13680,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13694,8 +13690,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13705,8 +13701,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13716,8 +13712,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13726,8 +13722,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13736,8 +13732,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13746,8 +13742,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13756,8 +13752,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13766,8 +13762,8 @@
 	 *         '}' 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13775,8 +13771,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13785,8 +13781,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13795,8 +13791,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13804,8 +13800,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13813,8 +13809,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13822,8 +13818,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13831,8 +13827,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13840,8 +13836,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13849,8 +13845,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13859,8 +13855,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13869,8 +13865,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13878,8 +13874,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13887,8 +13883,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13896,8 +13892,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13905,8 +13901,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13914,8 +13910,8 @@
 	 *         port+=Port 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13923,8 +13919,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -13933,8 +13929,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -13943,8 +13939,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -13952,8 +13948,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -13961,8 +13957,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13970,8 +13966,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -13979,8 +13975,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13988,8 +13984,8 @@
 	 *         signal+=Signal 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -13997,8 +13993,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -14007,8 +14003,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -14017,8 +14013,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -14026,8 +14022,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -14035,8 +14031,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14044,8 +14040,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -14053,8 +14049,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14062,8 +14058,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14073,8 +14069,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -14085,8 +14081,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -14097,8 +14093,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -14108,8 +14104,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -14119,8 +14115,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14130,8 +14126,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -14141,8 +14137,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14152,8 +14148,8 @@
 	 *         '@parameter:'? 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14199,8 +14195,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -14209,8 +14205,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -14219,8 +14215,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -14228,8 +14224,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -14237,8 +14233,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14246,8 +14242,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -14255,8 +14251,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14264,8 +14260,8 @@
 	 *         variable+=Variable 
 	 *         (ambiguity) 
 	 *         (('@inout:' | '@output:' | '@return:')? (ambiguity))* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14887,17 +14883,17 @@
 	 *     function+=FunctionPublic ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) routine+=Routine
 	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     port+=Port ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
 	 *     port+=PortPrivate ('@property:' | '@public:' | '@protected:' | '@private:')* (ambiguity) routine+=Routine
@@ -14933,8 +14929,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -14945,8 +14941,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -14957,8 +14953,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -14968,8 +14964,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -14979,8 +14975,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -14990,8 +14986,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -15001,8 +14997,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -15012,8 +15008,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -15023,8 +15019,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -15035,8 +15031,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -15047,8 +15043,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -15058,8 +15054,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -15069,8 +15065,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -15080,8 +15076,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -15091,8 +15087,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -15102,8 +15098,8 @@
 	 *         (ambiguity) 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -15212,507 +15208,1645 @@
 	
 	/**
 	 * Ambiguous syntax:
-	 *     '@property:'?
+	 *     '@protected:'?
 	 *
 	 * This ambiguous syntax occurs at:
 	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         buffer+=Buffer 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         channel+=Channel 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
 	 *         (ambiguity) 
-	 *         (('@public:' | '@protected:' | '@private:')? (ambiguity))* 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=Function (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=Port (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=PortPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=PortProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=PortPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=VariableProtected (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePublic (ambiguity) (('@public:' | '@protected:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         signal+=Signal 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         (ambiguity) 
+	 *         (('@property:' | '@public:' | '@private:')? (ambiguity))* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=Function (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' channel+=Channel
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' function+=Function
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' port+=Port
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' signal+=Signal
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' variable+=Variable
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' port+=PortPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* procedure+=Procedure
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegion
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegionLite
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* routine+=Routine
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' channel+=Channel
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' function+=Function
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' port+=Port
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' signal+=Signal
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' variable+=Variable
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' port+=PortPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* procedure+=Procedure
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegion
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegionLite
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* routine+=Routine
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' channel+=Channel
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' function+=Function
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' port+=Port
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' signal+=Signal
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' variable+=Variable
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' port+=PortPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* procedure+=Procedure
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegion
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegionLite
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* routine+=Routine
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' channel+=Channel
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' function+=Function
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' port+=Port
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' signal+=Signal
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@property:' variable+=Variable
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' port+=PortPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* procedure+=Procedure
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegion
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* region+=StatemachineRegionLite
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* routine+=Routine
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=Port (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=PortPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=PortProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=PortPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=VariableProtected (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePublic (ambiguity) (('@property:' | '@public:' | '@private:')? (ambiguity))* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
 	 */
-	protected void emit_Statemachine_PropertyKeyword_9_0_0_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+	protected void emit_Statemachine_ProtectedKeyword_9_2_0_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
@@ -15721,1328 +16855,34 @@
 	 *     '@public:'?
 	 *
 	 * This ambiguous syntax occurs at:
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         buffer+=Buffer 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         channel+=Channel 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         function+=Function 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         port+=Port 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         signal+=Signal 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         variable+=Variable 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         (ambiguity) 
-	 *         (('@property:' | '@protected:' | '@private:')? (ambiguity))* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* (ambiguity) (('@property:' | '@protected:' | '@private:')? (ambiguity))* '@protected:' variable+=VariableProtected
 	 */
 	protected void emit_Statemachine_PublicKeyword_9_1_0_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -17050,463 +16890,27 @@
 	
 	/**
 	 * Ambiguous syntax:
-	 *     '@return:'?
-	 *
-	 * This ambiguous syntax occurs at:
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         (ambiguity) 
-	 *         (('@input:' | '@inout:' | '@output:')? (ambiguity))* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn (ambiguity) (('@input:' | '@inout:' | '@output:')? (ambiguity))* (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 */
-	protected void emit_Statemachine_ReturnKeyword_8_3_0_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
-		acceptNodes(transition, nodes);
-	}
-	
-	/**
-	 * Ambiguous syntax:
 	 *     ('@composite:' | '@model:' | '@prototype:' | '@instance:')*
 	 *
 	 * This ambiguous syntax occurs at:
 	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
 	 *         name=ESIdentifier 
 	 *         '{' 
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17515,18 +16919,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
-	 *         (ambiguity) 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17536,8 +16930,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17546,18 +16940,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
-	 *         (ambiguity) 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17567,8 +16951,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17577,18 +16961,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
-	 *         (ambiguity) 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17598,8 +16972,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17608,18 +16982,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
-	 *         (ambiguity) 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17629,8 +16993,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17639,8 +17003,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -17651,27 +17015,36 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
 	 *     )
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
 	 *     instance+=InstanceMachine (ambiguity) '@statemachine:' machine+=Statemachine
 	 *     instance+=InstanceMachine (ambiguity) '}' (rule end)
 	 *     instance+=InstanceMachine (ambiguity) execution=ModelOfExecution
@@ -17683,24 +17056,23 @@
 	 *     machine+=Statemachine (ambiguity) '}' (rule end)
 	 *     machine+=Statemachine (ambiguity) execution=ModelOfExecution
 	 *     machine+=Statemachine (ambiguity) interaction=ModelOfInteraction
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
 	 *     procedure+=Procedure (ambiguity) '@statemachine:' machine+=Statemachine
 	 *     routine+=Routine (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '@statemachine:' machine+=Statemachine
 	 */
 	protected void emit_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -17717,8 +17089,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -17728,17 +17100,17 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -17747,17 +17119,27 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -17766,17 +17148,27 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -17785,17 +17177,27 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
 	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -17804,8 +17206,18 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -17815,8 +17227,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         '}' 
 	 *         (rule end)
@@ -17827,8 +17239,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -17838,142 +17250,126 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         interaction=ModelOfInteraction
 	 *     )
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
 	 *     procedure+=Procedure (ambiguity) '}' (rule end)
 	 *     procedure+=Procedure (ambiguity) execution=ModelOfExecution
 	 *     procedure+=Procedure (ambiguity) interaction=ModelOfInteraction
 	 *     routine+=Routine (ambiguity) '}' (rule end)
 	 *     routine+=Routine (ambiguity) execution=ModelOfExecution
 	 *     routine+=Routine (ambiguity) interaction=ModelOfInteraction
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) '}' (rule end)
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) execution=ModelOfExecution
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) '}' (rule end)
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) execution=ModelOfExecution
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) '}' (rule end)
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) execution=ModelOfExecution
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) interaction=ModelOfInteraction
 	 */
 	protected void emit_Statemachine___CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -17981,6 +17377,156 @@
 	
 	/**
 	 * Ambiguous syntax:
+	 *     ('@input:' | '@inout:' | '@output:' | '@return:')*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' channel+=Channel
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' function+=Function
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' port+=Port
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' signal+=Signal
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' variable+=Variable
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' port+=PortPublic
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* procedure+=Procedure
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegion
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegionLite
+	 *     parameter+=ParameterInout (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* routine+=Routine
+	 *     parameter+=ParameterInout (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterInout (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterInout (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterInout (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterInout (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterInout (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' channel+=Channel
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' function+=Function
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' port+=Port
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' signal+=Signal
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' variable+=Variable
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' port+=PortPublic
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* procedure+=Procedure
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegion
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegionLite
+	 *     parameter+=ParameterInput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* routine+=Routine
+	 *     parameter+=ParameterInput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterInput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterInput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterInput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterInput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterInput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' channel+=Channel
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' function+=Function
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' port+=Port
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' signal+=Signal
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' variable+=Variable
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' port+=PortPublic
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* procedure+=Procedure
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegion
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegionLite
+	 *     parameter+=ParameterOutput (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* routine+=Routine
+	 *     parameter+=ParameterOutput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterOutput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterOutput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterOutput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterOutput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterOutput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' port+=PortPrivate
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' buffer+=Buffer
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' channel+=Channel
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' function+=Function
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' port+=Port
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' signal+=Signal
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@property:' variable+=Variable
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' port+=PortPublic
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* procedure+=Procedure
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineNamedRegion
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegion
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* region+=StatemachineRegionLite
+	 *     parameter+=ParameterReturn (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* routine+=Routine
+	 *     parameter+=ParameterReturn (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterReturn (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterReturn (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterReturn (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' port+=PortProtected
+	 *     parameter+=ParameterReturn (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterReturn (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* '@protected:' variable+=VariableProtected
+	 */
+	protected void emit_Statemachine___InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0_or_ReturnKeyword_8_3_0__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Ambiguous syntax:
 	 *     ('<' 'moc:'? ModelOfComputationKing '>')?
 	 *
 	 * This ambiguous syntax occurs at:
@@ -18132,13 +17678,6 @@
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegion
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegionLite
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) procedure+=Procedure
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineNamedRegion
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegion
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegionLite
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) procedure+=Procedure
@@ -18153,13 +17692,6 @@
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegion
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegionLite
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) procedure+=Procedure
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineNamedRegion
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegion
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegionLite
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) procedure+=Procedure
@@ -18174,13 +17706,6 @@
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegion
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegionLite
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) procedure+=Procedure
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineNamedRegion
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegion
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegionLite
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) procedure+=Procedure
@@ -18195,13 +17720,6 @@
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegion
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) region+=StatemachineRegionLite
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) routine+=Routine
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) procedure+=Procedure
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineNamedRegion
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegion
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) region+=StatemachineRegionLite
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) routine+=Routine
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) procedure+=Procedure
@@ -18406,8 +17924,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -18417,60 +17935,56 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         machine+=AnyMachineBlock
 	 *     )
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 *     instance+=InstanceMachine (ambiguity) machine+=AnyMachineBlock
 	 *     machine+=AnyMachineBlock (ambiguity) machine+=AnyMachineBlock
 	 *     machine+=Statemachine (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 *     procedure+=Procedure (ambiguity) machine+=AnyMachineBlock
 	 *     routine+=Routine (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 */
 	protected void emit_Statemachine_____CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0__a_PrototypeKeyword_11_0_3_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -18509,8 +18023,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -18520,60 +18034,56 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         machine+=AnyMachineBlock
 	 *     )
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 *     instance+=InstanceMachine (ambiguity) machine+=AnyMachineBlock
 	 *     machine+=AnyMachineBlock (ambiguity) machine+=AnyMachineBlock
 	 *     machine+=Statemachine (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 *     procedure+=Procedure (ambiguity) machine+=AnyMachineBlock
 	 *     routine+=Routine (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 */
 	protected void emit_Statemachine_____CompositeKeyword_11_0_1_0_or_InstanceKeyword_11_0_4_0_or_PrototypeKeyword_11_0_3_0__a_ModelKeyword_11_0_2_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -18601,8 +18111,28 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (ambiguity) 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -18612,59 +18142,53 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         instance+=InstanceMachine
 	 *     )
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
 	 *     machine+=AnyMachineBlock (ambiguity) instance+=InstanceMachine
 	 *     machine+=Statemachine (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
 	 *     procedure+=Procedure (ambiguity) instance+=InstanceMachine
 	 *     routine+=Routine (ambiguity) instance+=InstanceMachine
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) instance+=InstanceMachine
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) instance+=InstanceMachine
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) instance+=InstanceMachine
 	 */
 	protected void emit_Statemachine_____CompositeKeyword_11_0_1_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a_InstanceKeyword_11_0_4_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -18710,416 +18234,6 @@
 	
 	/**
 	 * Ambiguous syntax:
-	 *     (('@input:' | '@inout:' | '@output:')? '@return:'?)*
-	 *
-	 * This ambiguous syntax occurs at:
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (ambiguity) 
-	 *         '@property:'? 
-	 *         (('@public:' | '@protected:' | '@private:')? '@property:'?)* 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineNamedRegion
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegion
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* region+=StatemachineRegionLite
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* routine+=Routine
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ buffer+=BufferPublic
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ channel+=ChannelPublic
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ function+=FunctionPublic
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ port+=PortPublic
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ signal+=SignalPublic
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@protected:' | '@private:')* '@public:')+ variable+=VariablePublic
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ buffer+=BufferProtected
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ channel+=ChannelProtected
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ function+=FunctionProtected
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ port+=PortProtected
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ signal+=SignalProtected
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@private:')* '@protected:')+ variable+=VariableProtected
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ buffer+=BufferPrivate
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ channel+=ChannelPrivate
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ function+=FunctionPrivate
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ port+=PortPrivate
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ signal+=SignalPrivate
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@property:' | '@public:' | '@protected:')* '@private:')+ variable+=VariablePrivate
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ buffer+=Buffer
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ channel+=Channel
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ function+=Function
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ port+=Port
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 */
-	protected void emit_Statemachine_____InoutKeyword_8_1_0_or_InputKeyword_8_0_0_or_OutputKeyword_8_2_0__q_ReturnKeyword_8_3_0_q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
-		acceptNodes(transition, nodes);
-	}
-	
-	/**
-	 * Ambiguous syntax:
 	 *     (('@input:' | '@inout:' | '@return:')* '@output:')*
 	 *
 	 * This ambiguous syntax occurs at:
@@ -19203,8 +18317,8 @@
 	 *         buffer+=Buffer 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19213,8 +18327,8 @@
 	 *         channel+=Channel 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19223,8 +18337,29 @@
 	 *         function+=Function 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19235,11 +18370,11 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
 	 *     )
 	 *     (
 	 *         name=ESIdentifier 
@@ -19247,8 +18382,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19258,8 +18393,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19269,8 +18404,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19280,8 +18415,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19291,8 +18426,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19302,8 +18437,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19311,8 +18446,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19321,8 +18456,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19330,8 +18465,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19339,8 +18474,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19348,8 +18483,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19357,8 +18492,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19366,8 +18501,8 @@
 	 *         parameter+=ParameterInout 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19376,8 +18511,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19387,8 +18522,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19397,8 +18532,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19407,8 +18542,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19417,8 +18552,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19427,8 +18562,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19437,8 +18572,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19446,8 +18581,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19456,8 +18591,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19465,8 +18600,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19474,8 +18609,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19483,8 +18618,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19492,8 +18627,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19501,8 +18636,8 @@
 	 *         parameter+=ParameterInput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19511,8 +18646,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19522,8 +18657,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19532,8 +18667,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19542,8 +18677,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19552,8 +18687,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19562,8 +18697,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19572,8 +18707,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19581,8 +18716,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19591,8 +18726,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19600,8 +18735,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19609,8 +18744,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19618,8 +18753,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19627,8 +18762,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19636,8 +18771,8 @@
 	 *         parameter+=ParameterOutput 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19646,8 +18781,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19657,8 +18792,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19667,8 +18802,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19677,8 +18812,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19687,8 +18822,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19697,8 +18832,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19707,8 +18842,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19716,8 +18851,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19726,8 +18861,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19735,8 +18870,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19744,8 +18879,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19753,8 +18888,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19762,8 +18897,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19771,8 +18906,8 @@
 	 *         parameter+=ParameterReturn 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19781,8 +18916,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19792,8 +18927,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19802,8 +18937,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19812,8 +18947,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19822,8 +18957,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19832,8 +18967,8 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19842,17 +18977,27 @@
 	 *         '}' 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
 	 *     (
+	 *         port+=Port 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
 	 *         signal+=Signal 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19861,8 +19006,8 @@
 	 *         typedef+=TypeDefinition 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19871,19 +19016,64 @@
 	 *         typedef+=TypeDefinition 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
 	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
 	 *         unrestrictedName=UnrestrictedName 
 	 *         '{' 
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
@@ -19894,8 +19084,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         '}' 
 	 *         (rule end)
@@ -19906,8 +19096,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         execution=ModelOfExecution
 	 *     )
@@ -19917,8 +19107,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
 	 *         interaction=ModelOfInteraction
 	 *     )
@@ -19928,8 +19118,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19939,8 +19129,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
 	 *         instance+=InstanceMachine
 	 *     )
@@ -19950,8 +19140,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19961,8 +19151,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -19970,19 +19160,28 @@
 	 *         variable+=Variable 
 	 *         '@input:'? 
 	 *         (ambiguity) 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
 	 *         '@statemachine:' 
 	 *         machine+=Statemachine
 	 *     )
-	 *     buffer+=Buffer '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=Buffer '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=Buffer '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=Buffer '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=Buffer '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (ambiguity) 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     buffer+=Buffer '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=Buffer '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=Buffer '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=Buffer '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=Buffer '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
 	 *     buffer+=Buffer '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     buffer+=Buffer '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     buffer+=Buffer '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20018,13 +19217,13 @@
 	 *     buffer+=Buffer '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     buffer+=Buffer '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     buffer+=Buffer '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     channel+=Channel '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=Channel '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=Channel '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=Channel '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=Channel '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=Channel '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=Channel '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=Channel '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=Channel '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
 	 *     channel+=Channel '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     channel+=Channel '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     channel+=Channel '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20060,13 +19259,12 @@
 	 *     channel+=Channel '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     channel+=Channel '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     channel+=Channel '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     function+=Function '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=Function '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=Function '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=Function '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=Function '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=Function '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=Function '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=Function '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
 	 *     function+=Function '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     function+=Function '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     function+=Function '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20102,7 +19300,6 @@
 	 *     function+=Function '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     function+=Function '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     function+=Function '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20138,7 +19335,7 @@
 	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterInout '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInout '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterInout '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterInout '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterInout '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20174,7 +19371,7 @@
 	 *     parameter+=ParameterInout '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterInout '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterInout '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20210,7 +19407,7 @@
 	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterInout '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterInput '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInput '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterInput '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterInput '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterInput '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20246,7 +19443,7 @@
 	 *     parameter+=ParameterInput '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterInput '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterInput '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20282,7 +19479,7 @@
 	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterInput '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterOutput '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterOutput '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterOutput '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterOutput '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterOutput '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20318,7 +19515,7 @@
 	 *     parameter+=ParameterOutput '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterOutput '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterOutput '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20354,7 +19551,7 @@
 	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterOutput '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterReturn '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterReturn '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterReturn '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterReturn '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterReturn '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20390,7 +19587,7 @@
 	 *     parameter+=ParameterReturn '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterReturn '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterReturn '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20426,14 +19623,13 @@
 	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     parameter+=ParameterReturn '}' '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=Port '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=Port '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=Port '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=Port '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
 	 *     port+=Port '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     port+=Port '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     port+=Port '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20469,13 +19665,13 @@
 	 *     port+=Port '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     port+=Port '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     port+=Port '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     signal+=Signal '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=Signal '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=Signal '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=Signal '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=Signal '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=Signal '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=Signal '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=Signal '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=Signal '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
 	 *     signal+=Signal '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     signal+=Signal '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     signal+=Signal '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20511,12 +19707,7 @@
 	 *     signal+=Signal '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     signal+=Signal '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     signal+=Signal '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     typedef+=TypeDefinition '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     typedef+=TypeDefinition '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     typedef+=TypeDefinition '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     typedef+=TypeDefinition '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
 	 *     typedef+=TypeDefinition '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     typedef+=TypeDefinition '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     typedef+=TypeDefinition '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20587,13 +19778,12 @@
 	 *     unrestrictedName=UnrestrictedName '{' '@parameter:'? '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ signal+=Signal
 	 *     unrestrictedName=UnrestrictedName '{' '@parameter:'? '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ typedef+=TypeDefinition
 	 *     unrestrictedName=UnrestrictedName '{' '@parameter:'? '@input:'? (ambiguity) (('@public:' | '@protected:' | '@private:')* '@property:')+ variable+=Variable
-	 *     variable+=Variable '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=Variable '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=Variable '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=Variable '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=Variable '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (ambiguity) '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=Variable '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=Variable '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=Variable '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (ambiguity) '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
 	 *     variable+=Variable '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* '@procedure:' procedure+=Procedure
 	 *     variable+=Variable '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* ('@routine:' | '@macro:') routine+=Routine
 	 *     variable+=Variable '@input:'? (ambiguity) ('@property:' | '@public:' | '@protected:' | '@private:')* procedure+=Procedure
@@ -20694,8 +19884,8 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         machine+=AnyMachineBlock
 	 *     )
@@ -20705,60 +19895,56 @@
 	 *         '@parameter:'? 
 	 *         '@input:'? 
 	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (('@property:' | '@protected:' | '@private:')? '@public:'?)* 
+	 *         '@protected:'? 
+	 *         (('@property:' | '@public:' | '@private:')? '@protected:'?)* 
 	 *         (ambiguity) 
 	 *         machine+=AnyMachineBlock
 	 *     )
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=Channel '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=Function '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     function+=FunctionPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=Channel '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=Function '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     function+=FunctionPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 *     instance+=InstanceMachine (ambiguity) machine+=AnyMachineBlock
 	 *     machine+=AnyMachineBlock (ambiguity) machine+=AnyMachineBlock
 	 *     machine+=Statemachine (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=Port '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     port+=PortPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=Port '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     port+=PortPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 *     procedure+=Procedure (ambiguity) machine+=AnyMachineBlock
 	 *     routine+=Routine (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=Signal '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     signal+=SignalPublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (('@property:' | '@protected:' | '@private:')? '@public:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=Variable '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariableProtected '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
-	 *     variable+=VariablePublic '@property:'? (('@public:' | '@protected:' | '@private:')? '@property:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=Signal '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     signal+=SignalPublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=Variable '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariableProtected '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
+	 *     variable+=VariablePublic '@protected:'? (('@property:' | '@public:' | '@private:')? '@protected:'?)* (ambiguity) machine+=AnyMachineBlock
 	 */
 	protected void emit_Statemachine_____InstanceKeyword_11_0_4_0_or_ModelKeyword_11_0_2_0_or_PrototypeKeyword_11_0_3_0__a_CompositeKeyword_11_0_1_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -20926,13 +20112,6 @@
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPublic
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePublic
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPublic
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPublic
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPublic
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPublic
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPublic
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePublic
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPublic
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPublic
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPublic
@@ -20947,13 +20126,6 @@
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPublic
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePublic
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPublic
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPublic
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPublic
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPublic
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPublic
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePublic
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPublic
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPublic
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPublic
@@ -20968,13 +20140,6 @@
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPublic
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePublic
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPublic
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPublic
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPublic
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPublic
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPublic
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePublic
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPublic
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPublic
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPublic
@@ -20989,13 +20154,6 @@
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPublic
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePublic
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPublic
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPublic
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPublic
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPublic
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPublic
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePublic
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPublic
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPublic
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPublic
@@ -21118,416 +20276,34 @@
 	 *     (('@property:' | '@protected:' | '@private:')? '@public:'?)*
 	 *
 	 * This ambiguous syntax occurs at:
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         name=ESIdentifier 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '}' 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         typedef+=TypeDefinition 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         '}' 
-	 *         (rule end)
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         execution=ModelOfExecution
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
-	 *         instance+=InstanceMachine
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     (
-	 *         unrestrictedName=UnrestrictedName 
-	 *         '{' 
-	 *         '@parameter:'? 
-	 *         '@input:'? 
-	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
-	 *         '@public:'? 
-	 *         (ambiguity) 
-	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
-	 *         machine+=AnyMachineBlock
-	 *     )
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@public:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' port+=PortProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' port+=PortProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' port+=PortProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' variable+=VariableProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' buffer+=BufferProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' channel+=ChannelProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' function+=FunctionProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' port+=PortProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' signal+=SignalProtected
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@public:'? (ambiguity) '@protected:' variable+=VariableProtected
 	 */
 	protected void emit_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_ProtectedKeyword_9_2_0__q_PublicKeyword_9_1_0_q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
@@ -21695,13 +20471,6 @@
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalProtected
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariableProtected
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferProtected
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelProtected
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionProtected
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortProtected
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalProtected
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariableProtected
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferProtected
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelProtected
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionProtected
@@ -21716,13 +20485,6 @@
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalProtected
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariableProtected
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferProtected
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelProtected
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionProtected
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortProtected
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalProtected
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariableProtected
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferProtected
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelProtected
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionProtected
@@ -21737,13 +20499,6 @@
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalProtected
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariableProtected
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferProtected
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelProtected
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionProtected
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortProtected
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalProtected
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariableProtected
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferProtected
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelProtected
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionProtected
@@ -21758,13 +20513,6 @@
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalProtected
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariableProtected
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferProtected
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelProtected
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionProtected
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortProtected
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalProtected
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariableProtected
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferProtected
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelProtected
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionProtected
@@ -21884,6 +20632,824 @@
 	
 	/**
 	 * Ambiguous syntax:
+	 *     (('@property:' | '@public:' | '@private:')? '@protected:'?)*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (
+	 *         function+=Function 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         name=ESIdentifier 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInout 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterInput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterOutput 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         parameter+=ParameterReturn 
+	 *         '}' 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         typedef+=TypeDefinition 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         '}' 
+	 *         (rule end)
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         execution=ModelOfExecution
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
+	 *         interaction=ModelOfInteraction
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ 
+	 *         instance+=InstanceMachine
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         unrestrictedName=UnrestrictedName 
+	 *         '{' 
+	 *         '@parameter:'? 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ 
+	 *         machine+=AnyMachineBlock
+	 *     )
+	 *     (
+	 *         variable+=Variable 
+	 *         '@input:'? 
+	 *         (('@inout:' | '@output:' | '@return:')? '@input:'?)* 
+	 *         '@protected:'? 
+	 *         (ambiguity) 
+	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
+	 *         '@statemachine:' 
+	 *         machine+=Statemachine
+	 *     )
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=Buffer '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=Buffer '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=Buffer '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=Buffer '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=Buffer '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=Buffer '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPrivate '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferProtected '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     buffer+=BufferPublic '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=Channel '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=Channel '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=Channel '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=Channel '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=Channel '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=Channel '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPrivate '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelProtected '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     channel+=ChannelPublic '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=Function '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=Function '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=Function '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=Function '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=Function '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=Function '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPrivate '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionProtected '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     function+=FunctionPublic '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     name=ESIdentifier '{' '@parameter:'? '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' port+=PortPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' buffer+=Buffer
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' channel+=Channel
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' function+=Function
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' port+=Port
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' signal+=Signal
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' variable+=Variable
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' port+=PortPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) procedure+=Procedure
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineNamedRegion
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegion
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegionLite
+	 *     parameter+=ParameterInout ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) routine+=Routine
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' port+=PortPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' buffer+=Buffer
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' channel+=Channel
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' function+=Function
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' port+=Port
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' signal+=Signal
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' variable+=Variable
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' port+=PortPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) procedure+=Procedure
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineNamedRegion
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegion
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegionLite
+	 *     parameter+=ParameterInput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) routine+=Routine
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' port+=PortPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' buffer+=Buffer
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' channel+=Channel
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' function+=Function
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' port+=Port
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' signal+=Signal
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' variable+=Variable
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' port+=PortPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) procedure+=Procedure
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineNamedRegion
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegion
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegionLite
+	 *     parameter+=ParameterOutput ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) routine+=Routine
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' buffer+=BufferPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' channel+=ChannelPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' function+=FunctionPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' port+=PortPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' signal+=SignalPrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@private:' variable+=VariablePrivate
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@procedure:' procedure+=Procedure
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' buffer+=Buffer
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' channel+=Channel
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' function+=Function
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' port+=Port
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' signal+=Signal
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@property:' variable+=Variable
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' buffer+=BufferPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' channel+=ChannelPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' function+=FunctionPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' port+=PortPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' signal+=SignalPublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' typedef+=TypeDefinition
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) '@public:' variable+=VariablePublic
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) ('@routine:' | '@macro:') routine+=Routine
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) procedure+=Procedure
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineNamedRegion
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegion
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) region+=StatemachineRegionLite
+	 *     parameter+=ParameterReturn ('@input:' | '@inout:' | '@output:' | '@return:')* '@protected:'? (ambiguity) routine+=Routine
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=Port '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=Port '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=Port '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=Port '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=Port '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=Port '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=PortPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=PortPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=PortPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=PortPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=PortPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=PortPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=PortPrivate '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=PortPrivate '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=PortProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=PortProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=PortProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=PortProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=PortProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=PortProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=PortProtected '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=PortProtected '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     port+=PortPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     port+=PortPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     port+=PortPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     port+=PortPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     port+=PortPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     port+=PortPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     port+=PortPublic '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     port+=PortPublic '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=Signal '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=Signal '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=Signal '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=Signal '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=Signal '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=Signal '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPrivate '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalProtected '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     signal+=SignalPublic '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     typedef+=TypeDefinition '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=Variable '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=Variable '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=Variable '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=Variable '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=Variable '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=Variable '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePrivate '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=VariableProtected '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
+	 *     variable+=VariablePublic '@protected:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
+	 */
+	protected void emit_Statemachine_____PrivateKeyword_9_3_0_or_PropertyKeyword_9_0_0_or_PublicKeyword_9_1_0__q_ProtectedKeyword_9_2_0_q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Ambiguous syntax:
 	 *     (('@public:' | '@protected:' | '@private:')* '@property:')*
 	 *
 	 * This ambiguous syntax occurs at:
@@ -22044,13 +21610,6 @@
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=Signal
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=Variable
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=Buffer
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=Channel
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=Function
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=Port
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=Signal
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=Variable
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=Buffer
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=Channel
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=Function
@@ -22065,13 +21624,6 @@
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=Signal
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=Variable
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=Buffer
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=Channel
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=Function
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=Port
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=Signal
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=Variable
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=Buffer
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=Channel
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=Function
@@ -22086,13 +21638,6 @@
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=Signal
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=Variable
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=Buffer
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=Channel
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=Function
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=Port
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=Signal
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=Variable
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=Buffer
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=Channel
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=Function
@@ -22107,13 +21652,6 @@
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=Signal
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=Variable
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=Buffer
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=Channel
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=Function
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=Port
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=Signal
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=Variable
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=Buffer
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=Channel
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=Function
@@ -22233,316 +21771,6 @@
 	
 	/**
 	 * Ambiguous syntax:
-	 *     (('@public:' | '@protected:' | '@private:')? '@property:'?)*
-	 *
-	 * This ambiguous syntax occurs at:
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInout 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterInput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterOutput 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')* 
-	 *         '@statemachine:' 
-	 *         machine+=Statemachine
-	 *     )
-	 *     (
-	 *         parameter+=ParameterReturn 
-	 *         '@return:'? 
-	 *         (('@input:' | '@inout:' | '@output:')? '@return:'?)* 
-	 *         '@property:'? 
-	 *         (ambiguity) 
-	 *         ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ 
-	 *         interaction=ModelOfInteraction
-	 *     )
-	 *     buffer+=Buffer '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=Buffer '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=Buffer '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=Buffer '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=Buffer '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=Buffer '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=Buffer '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPrivate '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferProtected '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     buffer+=BufferPublic '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=Channel '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=Channel '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=Channel '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=Channel '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=Channel '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=Channel '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPrivate '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelProtected '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     channel+=ChannelPublic '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=Function '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=Function '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=Function '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=Function '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=Function '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=Function '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPrivate '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=FunctionProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=FunctionProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=FunctionProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=FunctionProtected '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionProtected '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     function+=FunctionPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     function+=FunctionPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     function+=FunctionPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     function+=FunctionPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     function+=FunctionPublic '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     function+=FunctionPublic '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=Port '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=Port '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=Port '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=Port '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=Port '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=Port '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=PortPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=PortPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=PortPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=PortPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=PortPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=PortPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=PortPrivate '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=PortPrivate '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=PortProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=PortProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=PortProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=PortProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=PortProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=PortProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=PortProtected '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=PortProtected '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     port+=PortPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     port+=PortPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     port+=PortPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     port+=PortPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     port+=PortPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     port+=PortPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     port+=PortPublic '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     port+=PortPublic '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=Signal '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=Signal '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=Signal '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=Signal '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=Signal '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=Signal '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPrivate '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=SignalProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=SignalProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=SignalProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=SignalProtected '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalProtected '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     signal+=SignalPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     signal+=SignalPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     signal+=SignalPublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     signal+=SignalPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     signal+=SignalPublic '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     signal+=SignalPublic '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     typedef+=TypeDefinition '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=Variable '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=Variable '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=Variable '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=Variable '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=Variable '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=Variable '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePrivate '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=VariableProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=VariableProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=VariableProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=VariableProtected '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=VariableProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=VariableProtected '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=VariableProtected '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=VariableProtected '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')* '@statemachine:' machine+=Statemachine
-	 *     variable+=VariablePublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ '}' (rule end)
-	 *     variable+=VariablePublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ execution=ModelOfExecution
-	 *     variable+=VariablePublic '@property:'? (ambiguity) ('@composite:' | '@model:' | '@prototype:' | '@instance:')+ interaction=ModelOfInteraction
-	 *     variable+=VariablePublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@instance:')* '@prototype:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePublic '@property:'? (ambiguity) (('@composite:' | '@model:' | '@prototype:')* '@instance:')+ instance+=InstanceMachine
-	 *     variable+=VariablePublic '@property:'? (ambiguity) (('@composite:' | '@prototype:' | '@instance:')* '@model:')+ machine+=AnyMachineBlock
-	 *     variable+=VariablePublic '@property:'? (ambiguity) (('@model:' | '@prototype:' | '@instance:')* '@composite:')+ machine+=AnyMachineBlock
-	 */
-	protected void emit_Statemachine_____PrivateKeyword_9_3_0_or_ProtectedKeyword_9_2_0_or_PublicKeyword_9_1_0__q_PropertyKeyword_9_0_0_q__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
-		acceptNodes(transition, nodes);
-	}
-	
-	/**
-	 * Ambiguous syntax:
 	 *     (('@property:' | '@public:' | '@protected:')* '@private:')*
 	 *
 	 * This ambiguous syntax occurs at:
@@ -22703,13 +21931,6 @@
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPrivate
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInout '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePrivate
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPrivate
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPrivate
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPrivate
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPrivate
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPrivate
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInout '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePrivate
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPrivate
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPrivate
 	 *     parameter+=ParameterInout '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPrivate
@@ -22724,13 +21945,6 @@
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPrivate
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterInput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePrivate
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPrivate
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPrivate
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPrivate
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPrivate
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPrivate
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterInput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePrivate
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPrivate
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPrivate
 	 *     parameter+=ParameterInput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPrivate
@@ -22745,13 +21959,6 @@
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPrivate
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterOutput '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePrivate
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPrivate
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPrivate
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPrivate
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPrivate
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPrivate
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterOutput '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePrivate
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPrivate
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPrivate
 	 *     parameter+=ParameterOutput '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPrivate
@@ -22766,13 +21973,6 @@
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) signal+=SignalPrivate
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) typedef+=TypeDefinition
 	 *     parameter+=ParameterReturn '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) variable+=VariablePrivate
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) buffer+=BufferPrivate
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) channel+=ChannelPrivate
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) function+=FunctionPrivate
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) port+=PortPrivate
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) signal+=SignalPrivate
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) typedef+=TypeDefinition
-	 *     parameter+=ParameterReturn '@return:'? (('@input:' | '@inout:' | '@output:')? '@return:'?)* (ambiguity) variable+=VariablePrivate
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) buffer+=BufferPrivate
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) channel+=ChannelPrivate
 	 *     parameter+=ParameterReturn '}' '@input:'? (('@inout:' | '@output:' | '@return:')? '@input:'?)* (ambiguity) function+=FunctionPrivate
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/services/FormalMLGrammarAccess.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/services/FormalMLGrammarAccess.java
index f8b5aa1..95558e9 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/services/FormalMLGrammarAccess.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/services/FormalMLGrammarAccess.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.services;
 
@@ -33,12 +33,11 @@
 import org.eclipse.xtext.TerminalRule;
 import org.eclipse.xtext.UnorderedGroup;
 import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
-import org.eclipse.xtext.service.AbstractElementFinder.AbstractEnumRuleElementFinder;
-import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
+import org.eclipse.xtext.service.AbstractElementFinder;
 import org.eclipse.xtext.service.GrammarProvider;
 
 @Singleton
-public class FormalMLGrammarAccess extends AbstractGrammarElementFinder {
+public class FormalMLGrammarAccess extends AbstractElementFinder.AbstractGrammarElementFinder {
 	
 	public class XliaElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.Xlia");
@@ -51,21 +50,23 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Main Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Xlia fmlSpec::XliaModel:
-		//	prolog=XliaPrologObject
-		//	system=XliaSystem;
+		//Xlia returns fmlSpec::XliaModel
+		//    : prolog = XliaPrologObject
+		//          system = XliaSystem
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//prolog=XliaPrologObject system=XliaSystem
+		//prolog = XliaPrologObject
+		//         system = XliaSystem
 		public Group getGroup() { return cGroup; }
 		
-		//prolog=XliaPrologObject
+		//prolog = XliaPrologObject
 		public Assignment getPrologAssignment_0() { return cPrologAssignment_0; }
 		
 		//XliaPrologObject
 		public RuleCall getPrologXliaPrologObjectParserRuleCall_0_0() { return cPrologXliaPrologObjectParserRuleCall_0_0; }
 		
-		//system=XliaSystem
+		//system = XliaSystem
 		public Assignment getSystemAssignment_1() { return cSystemAssignment_1; }
 		
 		//XliaSystem
@@ -89,21 +90,28 @@
 		private final Assignment cElementsAssignment_4 = (Assignment)cGroup.eContents().get(4);
 		private final RuleCall cElementsXliaOptionObjectParserRuleCall_4_0 = (RuleCall)cElementsAssignment_4.eContents().get(0);
 		
-		//XliaPrologObject fmlSpec::XliaObject:
-		//	name=('@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity')
-		//	'<'
-		//	elements+=XliaPrologAttribute '>:'
-		//	elements+=XliaOptionObject?;
+		//XliaPrologObject returns fmlSpec::XliaObject
+		//    : name=( '@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity' )
+		//        '<'
+		//        ( elements+=XliaPrologAttribute )
+		////        ( ',' elements+=XliaPrologAttribute )+
+		//        '>:'
+		//        ( elements += XliaOptionObject )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=('@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity') '<' elements+=XliaPrologAttribute '>:'
-		//elements+=XliaOptionObject?
+		// name=( '@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity' )
+		//        '<'
+		//        ( elements+=XliaPrologAttribute )
+		////        ( ',' elements+=XliaPrologAttribute )+
+		//        '>:'
+		//        ( elements += XliaOptionObject )?
 		public Group getGroup() { return cGroup; }
 		
-		//name=('@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity')
+		//name=( '@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity' )
 		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
 		
-		//('@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity')
+		//( '@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity' )
 		public Alternatives getNameAlternatives_0_0() { return cNameAlternatives_0_0; }
 		
 		//'@FormalML'
@@ -127,17 +135,17 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_1() { return cLessThanSignKeyword_1; }
 		
-		//elements+=XliaPrologAttribute
+		//( elements+=XliaPrologAttribute )
 		public Assignment getElementsAssignment_2() { return cElementsAssignment_2; }
 		
 		//XliaPrologAttribute
 		public RuleCall getElementsXliaPrologAttributeParserRuleCall_2_0() { return cElementsXliaPrologAttributeParserRuleCall_2_0; }
 		
-		////		( ',' elements+=XliaPrologAttribute )+
-		//'>:'
+		////        ( ',' elements+=XliaPrologAttribute )+
+		//        '>:'
 		public Keyword getGreaterThanSignColonKeyword_3() { return cGreaterThanSignColonKeyword_3; }
 		
-		//elements+=XliaOptionObject?
+		//( elements += XliaOptionObject )?
 		public Assignment getElementsAssignment_4() { return cElementsAssignment_4; }
 		
 		//XliaOptionObject
@@ -158,18 +166,24 @@
 		private final RuleCall cValueLiteralFloatExpressionParserRuleCall_1_2_0_0 = (RuleCall)cValueAlternatives_1_2_0.eContents().get(0);
 		private final RuleCall cValueLiteralStringExpressionParserRuleCall_1_2_0_1 = (RuleCall)cValueAlternatives_1_2_0.eContents().get(1);
 		
-		//XliaPrologAttribute fmlSpec::XliaAttribute:
-		//	name=('system' | 'package') (',' 'version:'?
-		//	value=(LiteralFloatExpression | LiteralStringExpression))?;
+		//XliaPrologAttribute returns fmlSpec::XliaAttribute
+		//    : name=( 'system' | 'package' )
+		//        ( ',' ( 'version:' )?
+		//            value=( LiteralFloatExpression | LiteralStringExpression )
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=('system' | 'package') (',' 'version:'? value=(LiteralFloatExpression | LiteralStringExpression))?
+		//name=( 'system' | 'package' )
+		//       ( ',' ( 'version:' )?
+		//           value=( LiteralFloatExpression | LiteralStringExpression )
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
-		//name=('system' | 'package')
+		//name=( 'system' | 'package' )
 		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
 		
-		//('system' | 'package')
+		//( 'system' | 'package' )
 		public Alternatives getNameAlternatives_0_0() { return cNameAlternatives_0_0; }
 		
 		//'system'
@@ -178,19 +192,21 @@
 		//'package'
 		public Keyword getNamePackageKeyword_0_0_1() { return cNamePackageKeyword_0_0_1; }
 		
-		//(',' 'version:'? value=(LiteralFloatExpression | LiteralStringExpression))?
+		//( ',' ( 'version:' )?
+		//    value=( LiteralFloatExpression | LiteralStringExpression )
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//','
 		public Keyword getCommaKeyword_1_0() { return cCommaKeyword_1_0; }
 		
-		//'version:'?
+		//( 'version:' )?
 		public Keyword getVersionKeyword_1_1() { return cVersionKeyword_1_1; }
 		
-		//value=(LiteralFloatExpression | LiteralStringExpression)
+		//value=( LiteralFloatExpression | LiteralStringExpression )
 		public Assignment getValueAssignment_1_2() { return cValueAssignment_1_2; }
 		
-		//(LiteralFloatExpression | LiteralStringExpression)
+		//( LiteralFloatExpression | LiteralStringExpression )
 		public Alternatives getValueAlternatives_1_2_0() { return cValueAlternatives_1_2_0; }
 		
 		//LiteralFloatExpression
@@ -210,21 +226,24 @@
 		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
 		
 		////XliaPrologAttribute returns XliaAttribute
-		////	: (name = 'model')?    value=XliaModelKind
-		////	| (name = 'version')?
-		////		value=( LiteralFloatExpression | LiteralStringExpression )
-		////	;
+		////    : (name = 'model')?    value=XliaModelKind
+		////    | (name = 'version')?
+		////        value=( LiteralFloatExpression | LiteralStringExpression )
+		////    ;
 		////
 		////XliaModelKind returns fmlExpr::LiteralStringExpression
-		////	: value=( 'system' | 'package' )
-		////	;
-		//XliaOptionObject fmlSpec::XliaObject:
-		//	name='@option' '{'
-		//	elements+=XliaNamedElement*
-		//	'}';
+		////    : value=( 'system' | 'package' )
+		////    ;
+		//XliaOptionObject returns fmlSpec::XliaObject
+		//    : name='@option'  '{'
+		//        ( elements+=XliaNamedElement )*
+		//      '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name='@option' '{' elements+=XliaNamedElement* '}'
+		//name='@option'  '{'
+		//       ( elements+=XliaNamedElement )*
+		//     '}'
 		public Group getGroup() { return cGroup; }
 		
 		//name='@option'
@@ -236,7 +255,7 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
 		
-		//elements+=XliaNamedElement*
+		//( elements+=XliaNamedElement )*
 		public Assignment getElementsAssignment_2() { return cElementsAssignment_2; }
 		
 		//XliaNamedElement
@@ -252,13 +271,16 @@
 		private final RuleCall cXliaSectionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cXliaAttributeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		
-		//XliaNamedElement fmlSpec::XliaNamedElement:
-		//	XliaObject
-		//	| XliaSection
-		//	| XliaAttribute;
+		//XliaNamedElement returns fmlSpec::XliaNamedElement
+		//    : XliaObject
+		//    | XliaSection
+		//    | XliaAttribute
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//XliaObject | XliaSection | XliaAttribute
+		//XliaObject
+		//   | XliaSection
+		//   | XliaAttribute
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//XliaObject
@@ -280,13 +302,16 @@
 		private final RuleCall cElementsXliaNamedElementParserRuleCall_2_0 = (RuleCall)cElementsAssignment_2.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
 		
-		//XliaObject fmlSpec::XliaObject:
-		//	name=XLIA_ID '{'
-		//	elements+=XliaNamedElement*
-		//	'}';
+		//XliaObject returns fmlSpec::XliaObject
+		//    : name=XLIA_ID '{'
+		//        ( elements+=XliaNamedElement )*
+		//      '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=XLIA_ID '{' elements+=XliaNamedElement* '}'
+		//name=XLIA_ID '{'
+		//       ( elements+=XliaNamedElement )*
+		//     '}'
 		public Group getGroup() { return cGroup; }
 		
 		//name=XLIA_ID
@@ -298,7 +323,7 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
 		
-		//elements+=XliaNamedElement*
+		//( elements+=XliaNamedElement )*
 		public Assignment getElementsAssignment_2() { return cElementsAssignment_2; }
 		
 		//XliaNamedElement
@@ -317,13 +342,16 @@
 		private final RuleCall cElementsXliaAttributeParserRuleCall_2_0 = (RuleCall)cElementsAssignment_2.eContents().get(0);
 		private final Keyword cRightSquareBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
 		
-		//XliaSection fmlSpec::XliaSection:
-		//	name=XLIA_ID '['
-		//	elements+=XliaAttribute*
-		//	']';
+		//XliaSection returns fmlSpec::XliaSection
+		//    : name=XLIA_ID '['
+		//        ( elements+=XliaAttribute )*
+		//      ']'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=XLIA_ID '[' elements+=XliaAttribute* ']'
+		//name=XLIA_ID '['
+		//       ( elements+=XliaAttribute )*
+		//     ']'
 		public Group getGroup() { return cGroup; }
 		
 		//name=XLIA_ID
@@ -335,7 +363,7 @@
 		//'['
 		public Keyword getLeftSquareBracketKeyword_1() { return cLeftSquareBracketKeyword_1; }
 		
-		//elements+=XliaAttribute*
+		//( elements+=XliaAttribute )*
 		public Assignment getElementsAssignment_2() { return cElementsAssignment_2; }
 		
 		//XliaAttribute
@@ -354,8 +382,9 @@
 		private final RuleCall cValueExpressionParserRuleCall_2_0 = (RuleCall)cValueAssignment_2.eContents().get(0);
 		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
 		
-		//XliaAttribute fmlSpec::XliaAttribute:
-		//	name=XLIA_ID '=' value=Expression ';';
+		//XliaAttribute returns fmlSpec::XliaAttribute
+		//    : name=XLIA_ID '=' value=Expression ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//name=XLIA_ID '=' value=Expression ';'
@@ -388,8 +417,9 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Primitive Value
 		//////////////////////////////////////////////////////////////////////////////////
-		//EBoolean ecore::EBoolean:
-		//	'true' | 'false';
+		//EBoolean returns ecore::EBoolean
+		//    : 'true' | 'false'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'true' | 'false'
@@ -407,8 +437,9 @@
 		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
 		
-		//EInt ecore::EInt:
-		//	'-'? INT;
+		//EInt returns ecore::EInt
+		//    : '-'? INT
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'-'? INT
@@ -426,8 +457,9 @@
 		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
 		
-		//EInteger ecore::ELong:
-		//	'-'? INT;
+		//EInteger returns ecore::ELong
+		//    : '-'? INT
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'-'? INT
@@ -447,9 +479,9 @@
 		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
 		private final RuleCall cINTTerminalRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
 		
-		//EFloat ecore::EFloat:
-		//	'-'? INT? '.' INT //(('E'|'e') '-'? INT)?
-		//;
+		//EFloat returns ecore::EFloat
+		//    : '-'? INT? '.' INT //(('E'|'e') '-'? INT)?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'-'? INT? '.' INT
@@ -475,9 +507,9 @@
 		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
 		private final RuleCall cINTTerminalRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
 		
-		//EDouble ecore::EDouble:
-		//	'-'? INT? '.' INT //(('E'|'e') '-'? INT)?
-		//;
+		//EDouble returns ecore::EDouble
+		//    : '-'? INT? '.' INT //(('E'|'e') '-'? INT)?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'-'? INT? '.' INT
@@ -499,8 +531,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ECharacter");
 		private final RuleCall cCHARACTERTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ECharacter ecore::EChar:
-		//	CHARACTER;
+		//ECharacter returns ecore::EChar
+		//    : CHARACTER
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//CHARACTER
@@ -510,8 +543,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.EString");
 		private final RuleCall cSTRINGTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//EString:
-		//	STRING;
+		//EString returns ecore::EString
+		//    : STRING
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//STRING
@@ -521,8 +555,8 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.EOffset");
 		private final RuleCall cOFFSETTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//EOffset:
-		//	OFFSET;
+		//EOffset returns ecore::EString
+		//    : OFFSET ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//OFFSET
@@ -668,75 +702,112 @@
 		private final Keyword cDynamicPrototypeKeyword_134 = (Keyword)cAlternatives.eContents().get(134);
 		
 		////QualifiedName returns ecore::EString
-		////	: ID ( '[' ID ']' )? '.' ID ( '[' ID ']' )? | ID
-		////	;
-		//ReservedKeyWord:
-		//	'package' | 'system' | 'machine' | 'executable'
-		//	| 'vertex' | 'pseudostate'
-		//	| 'state' | 'statemachine'
-		//	| 'macro' | 'routine'
-		//	| 'procedure' | 'transition'
-		//	| 'public' | 'private' | 'protected'
-		//	| 'static' | 'final'
-		//	| 'volatile' | 'transient'
-		//	| 'model' | 'prototype' | 'instance'
-		//	| 'timed' | 'timed#dense' | 'timed#discrete'
-		//	| 'unsafe' | 'input_enabled'
-		//	| 'port' | 'signal' | 'message'
-		//	| 'buffer' | 'channel' | 'via'
-		//	| 'var' | 'val' | 'const'
-		//	| 'input' | 'in' | 'inout'
-		//	| 'output' | 'out' | 'return'
-		//	| 'simple' | 'start' | 'final'
-		//	| 'initial' | 'terminal' | 'junction'
-		//	| 'choice' | 'fork' | 'join'
-		//	| 'dhistory' | 'shistory'
-		//	| 'route' | 'connector' | 'connect'
-		//	| 'env' | 'rdv' | 'multirdv'
-		//	| 'buffer' | 'unicast' | 'anycast'
-		//	| 'multicast' | 'broadcast'
-		//	| 'boolean' | 'bool'
-		//	| 'char' | 'string'
-		//	| 'integer' | 'int'
-		//	| 'uinteger' | 'uint'
-		//	| 'rational' | 'rat'
-		//	| 'urational' | 'urat'
-		//	| 'time' | 'clock'
-		//	| 'float' | 'double' | 'real'
-		//	| 'ufloat' | 'udouble' | 'ureal'
-		//	| 'interval' | 'enum' | 'struct' | 'union'
-		//	| 'vector' | 'rvector' | 'list'
-		//	| 'set' | 'bag' | 'multiset'
-		//	| 'fifo' | 'lifo'
-		//	| 'guard' | 'tguard'
-		//	| 'event' | 'checksat'
-		//	| 'break' | 'continue' | 'exit' | 'init'
-		//	| 'destroy' | 'stop' | 'abort' | 'restart'
-		//	| 'suspend' | 'resume' | 'wait'
-		//	| 'disable' | 'enable'
-		//	| 'schedule' | 'irun' | 'run' | 'rtc'
-		//	| 'call' | 'new' | 'ctor' | 'newfresh'
-		//	| 'this' | 'self' | 'parent' | 'super'
-		//	| 'null'
-		//	| '#model' | '#instance' | '#static' | '#dynamic'
-		//	| '#runtime' | '#static#instance' | '#dynamic#instance'
-		//	| '#prototype' | '#dynamic#prototype';
+		////    : ID ( '[' ID ']' )? '.' ID ( '[' ID ']' )? | ID
+		////    ;
+		//ReservedKeyWord
+		//    : 'package'   | 'system'      | 'machine'  | 'executable'
+		//    | 'vertex'    | 'pseudostate'
+		//    | 'state'     | 'statemachine'
+		//    | 'macro'     | 'routine'
+		//    | 'procedure' | 'transition'
+		//    | 'public'    | 'private'     | 'protected'
+		//    | 'static'    | 'final'
+		//    | 'volatile'  | 'transient'
+		//    | 'model'     | 'prototype'   | 'instance'
+		//    | 'timed'     | 'timed#dense' | 'timed#discrete'
+		//    | 'unsafe'    | 'input_enabled'
+		//    | 'port'      | 'signal'      | 'message'
+		//    | 'buffer'    | 'channel'     | 'via'
+		//    | 'var'       | 'val'         | 'const'
+		//    | 'input'     | 'in'          | 'inout'
+		//    | 'output'    | 'out'         | 'return'
+		//    | 'simple'    | 'start'       | 'final'
+		//    | 'initial'   | 'terminal'    | 'junction'
+		//    | 'choice'    | 'fork'        | 'join'
+		//    | 'dhistory'  | 'shistory'
+		//    | 'route'     | 'connector'   | 'connect'
+		//    | 'env'       | 'rdv'         | 'multirdv'
+		//    | 'buffer'    | 'unicast'     | 'anycast'
+		//    | 'multicast' | 'broadcast'
+		//    | 'boolean'   | 'bool'
+		//    | 'char'      | 'string'
+		//    | 'integer'   | 'int'
+		//    | 'uinteger'  | 'uint'
+		//    | 'rational'  | 'rat'
+		//    | 'urational' | 'urat'
+		//    | 'time'      | 'clock'
+		//    | 'float'     | 'double'      | 'real'
+		//    | 'ufloat'    | 'udouble'     | 'ureal'
+		//    | 'interval'  | 'enum'        | 'struct' | 'union'
+		//    | 'vector'    | 'rvector'     | 'list'
+		//    | 'set'       | 'bag'         | 'multiset'
+		//    | 'fifo'      | 'lifo'
+		//    | 'guard'     | 'tguard'
+		//    | 'event'     | 'checksat'
+		//    | 'break'     | 'continue'    | 'exit'   | 'init'
+		//    | 'destroy'   | 'stop'        | 'abort'  | 'restart'
+		//    | 'suspend'   | 'resume'      | 'wait'
+		//    | 'disable'   | 'enable'
+		//    | 'schedule'  | 'irun'        | 'run'    | 'rtc'
+		//    | 'call'      | 'new'         | 'ctor'   | 'newfresh'
+		//    | 'this'      | 'self'        | 'parent' | 'super'
+		//    | 'null'
+		//    | '#model'    | '#instance'        | '#static'   |  '#dynamic'
+		//    | '#runtime'  | '#static#instance' | '#dynamic#instance'
+		//    | '#prototype'| '#dynamic#prototype'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'package' | 'system' | 'machine' | 'executable' | 'vertex' | 'pseudostate' | 'state' | 'statemachine' | 'macro' |
-		//'routine' | 'procedure' | 'transition' | 'public' | 'private' | 'protected' | 'static' | 'final' | 'volatile' |
-		//'transient' | 'model' | 'prototype' | 'instance' | 'timed' | 'timed#dense' | 'timed#discrete' | 'unsafe' |
-		//'input_enabled' | 'port' | 'signal' | 'message' | 'buffer' | 'channel' | 'via' | 'var' | 'val' | 'const' | 'input' |
-		//'in' | 'inout' | 'output' | 'out' | 'return' | 'simple' | 'start' | 'final' | 'initial' | 'terminal' | 'junction' |
-		//'choice' | 'fork' | 'join' | 'dhistory' | 'shistory' | 'route' | 'connector' | 'connect' | 'env' | 'rdv' | 'multirdv' |
-		//'buffer' | 'unicast' | 'anycast' | 'multicast' | 'broadcast' | 'boolean' | 'bool' | 'char' | 'string' | 'integer' |
-		//'int' | 'uinteger' | 'uint' | 'rational' | 'rat' | 'urational' | 'urat' | 'time' | 'clock' | 'float' | 'double' |
-		//'real' | 'ufloat' | 'udouble' | 'ureal' | 'interval' | 'enum' | 'struct' | 'union' | 'vector' | 'rvector' | 'list' |
-		//'set' | 'bag' | 'multiset' | 'fifo' | 'lifo' | 'guard' | 'tguard' | 'event' | 'checksat' | 'break' | 'continue' |
-		//'exit' | 'init' | 'destroy' | 'stop' | 'abort' | 'restart' | 'suspend' | 'resume' | 'wait' | 'disable' | 'enable' |
-		//'schedule' | 'irun' | 'run' | 'rtc' | 'call' | 'new' | 'ctor' | 'newfresh' | 'this' | 'self' | 'parent' | 'super' |
-		//'null' | '#model' | '#instance' | '#static' | '#dynamic' | '#runtime' | '#static#instance' | '#dynamic#instance' |
-		//'#prototype' | '#dynamic#prototype'
+		//'package'   | 'system'      | 'machine'  | 'executable'
+		//   | 'vertex'    | 'pseudostate'
+		//   | 'state'     | 'statemachine'
+		//   | 'macro'     | 'routine'
+		//   | 'procedure' | 'transition'
+		//   | 'public'    | 'private'     | 'protected'
+		//   | 'static'    | 'final'
+		//   | 'volatile'  | 'transient'
+		//   | 'model'     | 'prototype'   | 'instance'
+		//   | 'timed'     | 'timed#dense' | 'timed#discrete'
+		//   | 'unsafe'    | 'input_enabled'
+		//   | 'port'      | 'signal'      | 'message'
+		//   | 'buffer'    | 'channel'     | 'via'
+		//   | 'var'       | 'val'         | 'const'
+		//   | 'input'     | 'in'          | 'inout'
+		//   | 'output'    | 'out'         | 'return'
+		//   | 'simple'    | 'start'       | 'final'
+		//   | 'initial'   | 'terminal'    | 'junction'
+		//   | 'choice'    | 'fork'        | 'join'
+		//   | 'dhistory'  | 'shistory'
+		//   | 'route'     | 'connector'   | 'connect'
+		//   | 'env'       | 'rdv'         | 'multirdv'
+		//   | 'buffer'    | 'unicast'     | 'anycast'
+		//   | 'multicast' | 'broadcast'
+		//   | 'boolean'   | 'bool'
+		//   | 'char'      | 'string'
+		//   | 'integer'   | 'int'
+		//   | 'uinteger'  | 'uint'
+		//   | 'rational'  | 'rat'
+		//   | 'urational' | 'urat'
+		//   | 'time'      | 'clock'
+		//   | 'float'     | 'double'      | 'real'
+		//   | 'ufloat'    | 'udouble'     | 'ureal'
+		//   | 'interval'  | 'enum'        | 'struct' | 'union'
+		//   | 'vector'    | 'rvector'     | 'list'
+		//   | 'set'       | 'bag'         | 'multiset'
+		//   | 'fifo'      | 'lifo'
+		//   | 'guard'     | 'tguard'
+		//   | 'event'     | 'checksat'
+		//   | 'break'     | 'continue'    | 'exit'   | 'init'
+		//   | 'destroy'   | 'stop'        | 'abort'  | 'restart'
+		//   | 'suspend'   | 'resume'      | 'wait'
+		//   | 'disable'   | 'enable'
+		//   | 'schedule'  | 'irun'        | 'run'    | 'rtc'
+		//   | 'call'      | 'new'         | 'ctor'   | 'newfresh'
+		//   | 'this'      | 'self'        | 'parent' | 'super'
+		//   | 'null'
+		//   | '#model'    | '#instance'        | '#static'   |  '#dynamic'
+		//   | '#runtime'  | '#static#instance' | '#dynamic#instance'
+		//   | '#prototype'| '#dynamic#prototype'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'package'
@@ -1148,8 +1219,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ESIdentifier");
 		private final RuleCall cXLIA_IDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ESIdentifier:
-		//	XLIA_ID;
+		//ESIdentifier returns ecore::EString
+		//    : XLIA_ID
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//XLIA_ID
@@ -1168,14 +1240,15 @@
 		private final Keyword cColonKeyword_2_0_1 = (Keyword)cAlternatives_2_0.eContents().get(1);
 		private final RuleCall cXLIA_IDTerminalRuleCall_2_1 = (RuleCall)cGroup_2.eContents().get(1);
 		
-		//ESUfid:
-		//	('spec::' | '::')? XLIA_ID (('.' | ':') XLIA_ID)*;
+		//ESUfid returns ecore::EString
+		//    : ( 'spec::' | '::' )?  XLIA_ID  ( ( '.' | ':' ) XLIA_ID )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//('spec::' | '::')? XLIA_ID (('.' | ':') XLIA_ID)*
+		//( 'spec::' | '::' )?  XLIA_ID  ( ( '.' | ':' ) XLIA_ID )*
 		public Group getGroup() { return cGroup; }
 		
-		//('spec::' | '::')?
+		//( 'spec::' | '::' )?
 		public Alternatives getAlternatives_0() { return cAlternatives_0; }
 		
 		//'spec::'
@@ -1187,10 +1260,10 @@
 		//XLIA_ID
 		public RuleCall getXLIA_IDTerminalRuleCall_1() { return cXLIA_IDTerminalRuleCall_1; }
 		
-		//(('.' | ':') XLIA_ID)*
+		//( ( '.' | ':' ) XLIA_ID )*
 		public Group getGroup_2() { return cGroup_2; }
 		
-		//('.' | ':')
+		//( '.' | ':' )
 		public Alternatives getAlternatives_2_0() { return cAlternatives_2_0; }
 		
 		//'.'
@@ -1206,8 +1279,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.UnrestrictedName");
 		private final RuleCall cSTRINGTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//UnrestrictedName:
-		//	STRING;
+		//UnrestrictedName returns ecore::EString
+		//    : STRING
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//STRING
@@ -1226,35 +1300,40 @@
 		private final Assignment cNameBindingAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
 		private final RuleCall cNameBindingNameBindingParserRuleCall_2_1_0 = (RuleCall)cNameBindingAssignment_2_1.eContents().get(0);
 		
-		//QualifiedName fmlCommon::QualifiedName:
-		//	UnqualifiedName ('::' nameBinding+=NameBinding)* ('.' nameBinding+=NameBinding)*;
+		//QualifiedName returns fmlCommon::QualifiedName
+		//    : UnqualifiedName
+		//        ( '::' nameBinding += NameBinding )*
+		//        ( '.' nameBinding += NameBinding )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//UnqualifiedName ('::' nameBinding+=NameBinding)* ('.' nameBinding+=NameBinding)*
+		//UnqualifiedName
+		//       ( '::' nameBinding += NameBinding )*
+		//       ( '.' nameBinding += NameBinding )*
 		public Group getGroup() { return cGroup; }
 		
 		//UnqualifiedName
 		public RuleCall getUnqualifiedNameParserRuleCall_0() { return cUnqualifiedNameParserRuleCall_0; }
 		
-		//('::' nameBinding+=NameBinding)*
+		//( '::' nameBinding += NameBinding )*
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'::'
 		public Keyword getColonColonKeyword_1_0() { return cColonColonKeyword_1_0; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment_1_1() { return cNameBindingAssignment_1_1; }
 		
 		//NameBinding
 		public RuleCall getNameBindingNameBindingParserRuleCall_1_1_0() { return cNameBindingNameBindingParserRuleCall_1_1_0; }
 		
-		//('.' nameBinding+=NameBinding)*
+		//( '.' nameBinding += NameBinding )*
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'.'
 		public Keyword getFullStopKeyword_2_0() { return cFullStopKeyword_2_0; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment_2_1() { return cNameBindingAssignment_2_1; }
 		
 		//NameBinding
@@ -1278,52 +1357,61 @@
 		private final Assignment cNameBindingAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
 		private final RuleCall cNameBindingNameBindingParserRuleCall_2_2_1_0 = (RuleCall)cNameBindingAssignment_2_2_1.eContents().get(0);
 		
-		//PotentiallyAmbiguousQualifiedName fmlCommon::QualifiedName:
-		//	UnqualifiedName ('::' nameBinding+=NameBinding)* (isAmbiguous?='.' nameBinding+=NameBinding ('.'
-		//	nameBinding+=NameBinding)*)?;
+		//PotentiallyAmbiguousQualifiedName returns fmlCommon::QualifiedName
+		//    : UnqualifiedName
+		//        ( '::' nameBinding += NameBinding )*
+		//        ( isAmbiguous ?= '.' nameBinding += NameBinding
+		//            ( '.' nameBinding += NameBinding )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//UnqualifiedName ('::' nameBinding+=NameBinding)* (isAmbiguous?='.' nameBinding+=NameBinding ('.'
-		//nameBinding+=NameBinding)*)?
+		//UnqualifiedName
+		//       ( '::' nameBinding += NameBinding )*
+		//       ( isAmbiguous ?= '.' nameBinding += NameBinding
+		//           ( '.' nameBinding += NameBinding )*
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//UnqualifiedName
 		public RuleCall getUnqualifiedNameParserRuleCall_0() { return cUnqualifiedNameParserRuleCall_0; }
 		
-		//('::' nameBinding+=NameBinding)*
+		//( '::' nameBinding += NameBinding )*
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'::'
 		public Keyword getColonColonKeyword_1_0() { return cColonColonKeyword_1_0; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment_1_1() { return cNameBindingAssignment_1_1; }
 		
 		//NameBinding
 		public RuleCall getNameBindingNameBindingParserRuleCall_1_1_0() { return cNameBindingNameBindingParserRuleCall_1_1_0; }
 		
-		//(isAmbiguous?='.' nameBinding+=NameBinding ('.' nameBinding+=NameBinding)*)?
+		//( isAmbiguous ?= '.' nameBinding += NameBinding
+		//    ( '.' nameBinding += NameBinding )*
+		//)?
 		public Group getGroup_2() { return cGroup_2; }
 		
-		//isAmbiguous?='.'
+		//isAmbiguous ?= '.'
 		public Assignment getIsAmbiguousAssignment_2_0() { return cIsAmbiguousAssignment_2_0; }
 		
 		//'.'
 		public Keyword getIsAmbiguousFullStopKeyword_2_0_0() { return cIsAmbiguousFullStopKeyword_2_0_0; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment_2_1() { return cNameBindingAssignment_2_1; }
 		
 		//NameBinding
 		public RuleCall getNameBindingNameBindingParserRuleCall_2_1_0() { return cNameBindingNameBindingParserRuleCall_2_1_0; }
 		
-		//('.' nameBinding+=NameBinding)*
+		//( '.' nameBinding += NameBinding )*
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//'.'
 		public Keyword getFullStopKeyword_2_2_0() { return cFullStopKeyword_2_2_0; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment_2_2_1() { return cNameBindingAssignment_2_2_1; }
 		
 		//NameBinding
@@ -1338,23 +1426,24 @@
 		private final Assignment cNameBindingAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
 		private final RuleCall cNameBindingNameBindingParserRuleCall_1_1_0 = (RuleCall)cNameBindingAssignment_1_1.eContents().get(0);
 		
-		//ColonQualifiedName fmlCommon::QualifiedName:
-		//	UnqualifiedName ('::' nameBinding+=NameBinding)+;
+		//ColonQualifiedName returns fmlCommon::QualifiedName
+		//    : UnqualifiedName ( '::' nameBinding += NameBinding )+
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//UnqualifiedName ('::' nameBinding+=NameBinding)+
+		//UnqualifiedName ( '::' nameBinding += NameBinding )+
 		public Group getGroup() { return cGroup; }
 		
 		//UnqualifiedName
 		public RuleCall getUnqualifiedNameParserRuleCall_0() { return cUnqualifiedNameParserRuleCall_0; }
 		
-		//('::' nameBinding+=NameBinding)+
+		//( '::' nameBinding += NameBinding )+
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'::'
 		public Keyword getColonColonKeyword_1_0() { return cColonColonKeyword_1_0; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment_1_1() { return cNameBindingAssignment_1_1; }
 		
 		//NameBinding
@@ -1369,23 +1458,24 @@
 		private final Assignment cNameBindingAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
 		private final RuleCall cNameBindingNameBindingParserRuleCall_1_1_0 = (RuleCall)cNameBindingAssignment_1_1.eContents().get(0);
 		
-		//DotQualifiedName fmlCommon::QualifiedName:
-		//	UnqualifiedName ('.' nameBinding+=NameBinding)+;
+		//DotQualifiedName returns fmlCommon::QualifiedName
+		//    : UnqualifiedName ( '.' nameBinding += NameBinding )+
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//UnqualifiedName ('.' nameBinding+=NameBinding)+
+		//UnqualifiedName ( '.' nameBinding += NameBinding )+
 		public Group getGroup() { return cGroup; }
 		
 		//UnqualifiedName
 		public RuleCall getUnqualifiedNameParserRuleCall_0() { return cUnqualifiedNameParserRuleCall_0; }
 		
-		//('.' nameBinding+=NameBinding)+
+		//( '.' nameBinding += NameBinding )+
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'.'
 		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment_1_1() { return cNameBindingAssignment_1_1; }
 		
 		//NameBinding
@@ -1396,11 +1486,12 @@
 		private final Assignment cNameBindingAssignment = (Assignment)rule.eContents().get(1);
 		private final RuleCall cNameBindingNameBindingParserRuleCall_0 = (RuleCall)cNameBindingAssignment.eContents().get(0);
 		
-		//UnqualifiedName fmlCommon::QualifiedName:
-		//	nameBinding+=NameBinding;
+		//UnqualifiedName returns fmlCommon::QualifiedName
+		//    : nameBinding += NameBinding
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//nameBinding+=NameBinding
+		//nameBinding += NameBinding
 		public Assignment getNameBindingAssignment() { return cNameBindingAssignment; }
 		
 		//NameBinding
@@ -1410,8 +1501,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.NameBinding");
 		private final RuleCall cXLIA_IDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//NameBinding:
-		//	XLIA_ID;
+		//NameBinding
+		//    : XLIA_ID
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//XLIA_ID
@@ -1440,30 +1532,48 @@
 		private final Keyword cAssertKeyword_17 = (Keyword)cAlternatives.eContents().get(17);
 		private final Keyword cNegKeyword_18 = (Keyword)cAlternatives.eContents().get(18);
 		
-		//ModelOfComputationKing:
-		//	'and'
-		//	| 'or'
-		//	| 'start'
-		//	| '#STF'
-		//	| '#STS'
-		//	| '#DF'
-		//	| '#alt'
-		//	| '#opt'
-		//	| '#loop'
-		//	| '#break'
-		//	| '#par'
-		//	| '#strict'
-		//	| '#weak'
-		//	| '#seq'
-		//	| '#critical'
-		//	| '#ignore'
-		//	| '#consider'
-		//	| '#assert'
-		//	| '#neg';
+		//ModelOfComputationKing
+		//    : 'and'
+		//    | 'or'
+		//    | 'start'
+		//    | '#STF'
+		//    | '#STS'
+		//    | '#DF'
+		//    | '#alt'
+		//    | '#opt'
+		//    | '#loop'
+		//    | '#break'
+		//    | '#par'
+		//    | '#strict'
+		//    | '#weak'
+		//    | '#seq'
+		//    | '#critical'
+		//    | '#ignore'
+		//    | '#consider'
+		//    | '#assert'
+		//    | '#neg'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'and' | 'or' | 'start' | '#STF' | '#STS' | '#DF' | '#alt' | '#opt' | '#loop' | '#break' | '#par' | '#strict' | '#weak' |
-		//'#seq' | '#critical' | '#ignore' | '#consider' | '#assert' | '#neg'
+		//'and'
+		//   | 'or'
+		//   | 'start'
+		//   | '#STF'
+		//   | '#STS'
+		//   | '#DF'
+		//   | '#alt'
+		//   | '#opt'
+		//   | '#loop'
+		//   | '#break'
+		//   | '#par'
+		//   | '#strict'
+		//   | '#weak'
+		//   | '#seq'
+		//   | '#critical'
+		//   | '#ignore'
+		//   | '#consider'
+		//   | '#assert'
+		//   | '#neg'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'and'
@@ -1536,20 +1646,28 @@
 		private final Keyword cPrototypeKeyword_7 = (Keyword)cAlternatives.eContents().get(7);
 		private final Keyword cDynamicPrototypeKeyword_8 = (Keyword)cAlternatives.eContents().get(8);
 		
-		//DesignDebugTrace:
-		//	'#model'
-		//	| '#instance'
-		//	| '#static'
-		//	| '#dynamic'
-		//	| '#runtime'
-		//	| '#static#instance'
-		//	| '#dynamic#instance'
-		//	| '#prototype'
-		//	| '#dynamic#prototype';
+		//DesignDebugTrace
+		//    : '#model'
+		//    | '#instance'
+		//    | '#static'
+		//    | '#dynamic'
+		//    | '#runtime'
+		//    | '#static#instance'
+		//    | '#dynamic#instance'
+		//    | '#prototype'
+		//    | '#dynamic#prototype'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'#model' | '#instance' | '#static' | '#dynamic' | '#runtime' | '#static#instance' | '#dynamic#instance' | '#prototype' |
-		//'#dynamic#prototype'
+		//'#model'
+		//   | '#instance'
+		//   | '#static'
+		//   | '#dynamic'
+		//   | '#runtime'
+		//   | '#static#instance'
+		//   | '#dynamic#instance'
+		//   | '#prototype'
+		//   | '#dynamic#prototype'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'#model'
@@ -1744,125 +1862,268 @@
 		private final RuleCall cMainMoeBehaviorParserRuleCall_11_0 = (RuleCall)cMainAssignment_11.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
 		
-		//XliaSystem fmlInfra::XliaSystem:
-		//	(visibility=VisibilityKind?
-		//	& timed?='timed'?
-		//	& dense_timed?='timed#dense'?
-		//	& discrete_timed?='timed#discrete'?
-		//	& input_enabled?='input_enabled'?
-		//	& unsafe?='unsafe'?)
-		//	'system' ('<' 'moc:'? ('and' | 'or') '>')?
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'{' (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*
-		//	('@property:' (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*
-		//	| '@public:' (port+=PortPublic
-		//	| signal+=SignalPublic
-		//	| buffer+=BufferPublic
-		//	| channel+=ChannelPublic
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPublic
-		//	| variable+=VariablePublic)*
-		//	| '@protected:' (port+=PortProtected
-		//	| signal+=SignalProtected
-		//	| buffer+=BufferProtected
-		//	| channel+=ChannelProtected
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionProtected
-		//	| variable+=VariableProtected)*
-		//	| '@private:' (port+=PortPrivate
-		//	| signal+=SignalPrivate
-		//	| buffer+=BufferPrivate
-		//	| channel+=ChannelPrivate
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPrivate
-		//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-		//	| '@procedure:' procedure+=Procedure+)*
-		//	| (routine+=Routine | procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock
-		//	| instance+=InstanceMachine)+
-		//	| '@model:' machine+=AnyMachineBlock*
-		//	| '@prototype:' machine+=AnyMachineBlock*
-		//	| '@instance:' instance+=InstanceMachine*)* ('@behavior:' behavior+=Behavior+
-		//	| '@statemachine:' behavior+=Statemachine+)*
-		//	main=MoeBehavior
-		//	//		// optional unnamed section for property full declaration / definition
-		//	//		propertyPart=PropertyPart
-		//	//
-		//	//		compositePart=CompositePart
-		//	//
-		//	//		behaviorPart=BehaviorPart
-		//	'}';
+		//XliaSystem returns fmlInfra::XliaSystem
+		//    : ( ( visibility=VisibilityKind )?
+		//        & ( timed?='timed' )?
+		//        & ( dense_timed?='timed#dense' )?
+		//        & ( discrete_timed?='timed#discrete' )?
+		//        & ( input_enabled ?= 'input_enabled' )?
+		//        & ( unsafe ?= 'unsafe' )?
+		//        )
+		//        'system' ('<' ( 'moc:' )? ( 'and' | 'or' ) '>')?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//        ( // optional unnamed section for property full declaration / definition
+		////            ( 'port'
+		////                ( port+=PortImpl
+		////                | '{' ( port+=PortImpl )+ '}'
+		////                )
+		////            | 'signal'
+		////                ( signal+=SignalImpl
+		////                | '{' ( signal+=SignalImpl )+ '}'
+		////                )
+		////            | 'buffer'
+		////                ( buffer+=BufferImpl
+		////                | '{' ( buffer+=BufferImpl )+ '}'
+		////                )
+		////            | channel+=Channel
+		////            | 'type'
+		////                ( typedef+=TypeDefinitionImpl
+		////                | '{' ( typedef+=TypeDefinitionImpl )+ '}'
+		////                )
+		////            | 'var'
+		////                ( property+=VariableImpl
+		////                | '{' ( variable+=VariableImpl )+ '}'
+		////                )
+		////            | ( 'val' | 'const' )
+		////                ( variable+=VariableImpl
+		////                | '{' ( variable+=VariableImpl )+ '}'
+		////                )
+		////            | variable+=Variable
+		////            )*
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine | procedure+=Procedure )+
+		//        )
+		//        ( ( '@composite:' | '@machine:' )
+		//            ( machine +=AnyMachineBlock
+		//            | instance+=InstanceMachine
+		//            )+
+		//        | '@model:'     ( machine +=AnyMachineBlock )*
+		//        | '@prototype:' ( machine +=AnyMachineBlock )*
+		//        | '@instance:'  ( instance+=InstanceMachine )*
+		//        )*
+		//        ( '@behavior:'     ( behavior+=Behavior )+
+		//        | '@statemachine:' ( behavior+=Statemachine )+
+		//        )*
+		//        main=MoeBehavior
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
+		////
+		////        compositePart=CompositePart
+		////
+		////        behaviorPart=BehaviorPart
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//(visibility=VisibilityKind? & timed?='timed'? & dense_timed?='timed#dense'? & discrete_timed?='timed#discrete'? &
-		//input_enabled?='input_enabled'? & unsafe?='unsafe'?) 'system' ('<' 'moc:'? ('and' | 'or') '>')? name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? '{' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel |
-		//typedef+=TypeDefinition | function+=Function | variable+=Variable)* ('@property:' (port+=Port | signal+=Signal |
-		//buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function | variable+=Variable)* | '@public:'
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)* | '@protected:' (port+=PortProtected | signal+=SignalProtected |
-		//buffer+=BufferProtected | channel+=ChannelProtected | typedef+=TypeDefinition | function+=FunctionProtected |
-		//variable+=VariableProtected)* | '@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate |
-		//channel+=ChannelPrivate | typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*)*
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+ |
-		//'@model:' machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* | '@instance:'
-		//instance+=InstanceMachine*)* ('@behavior:' behavior+=Behavior+ | '@statemachine:' behavior+=Statemachine+)*
-		//main=MoeBehavior //		// optional unnamed section for property full declaration / definition
-		////		propertyPart=PropertyPart
+		// ( ( visibility=VisibilityKind )?
+		//        & ( timed?='timed' )?
+		//        & ( dense_timed?='timed#dense' )?
+		//        & ( discrete_timed?='timed#discrete' )?
+		//        & ( input_enabled ?= 'input_enabled' )?
+		//        & ( unsafe ?= 'unsafe' )?
+		//        )
+		//        'system' ('<' ( 'moc:' )? ( 'and' | 'or' ) '>')?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//        ( // optional unnamed section for property full declaration / definition
+		////            ( 'port'
+		////                ( port+=PortImpl
+		////                | '{' ( port+=PortImpl )+ '}'
+		////                )
+		////            | 'signal'
+		////                ( signal+=SignalImpl
+		////                | '{' ( signal+=SignalImpl )+ '}'
+		////                )
+		////            | 'buffer'
+		////                ( buffer+=BufferImpl
+		////                | '{' ( buffer+=BufferImpl )+ '}'
+		////                )
+		////            | channel+=Channel
+		////            | 'type'
+		////                ( typedef+=TypeDefinitionImpl
+		////                | '{' ( typedef+=TypeDefinitionImpl )+ '}'
+		////                )
+		////            | 'var'
+		////                ( property+=VariableImpl
+		////                | '{' ( variable+=VariableImpl )+ '}'
+		////                )
+		////            | ( 'val' | 'const' )
+		////                ( variable+=VariableImpl
+		////                | '{' ( variable+=VariableImpl )+ '}'
+		////                )
+		////            | variable+=Variable
+		////            )*
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine | procedure+=Procedure )+
+		//        )
+		//        ( ( '@composite:' | '@machine:' )
+		//            ( machine +=AnyMachineBlock
+		//            | instance+=InstanceMachine
+		//            )+
+		//        | '@model:'     ( machine +=AnyMachineBlock )*
+		//        | '@prototype:' ( machine +=AnyMachineBlock )*
+		//        | '@instance:'  ( instance+=InstanceMachine )*
+		//        )*
+		//        ( '@behavior:'     ( behavior+=Behavior )+
+		//        | '@statemachine:' ( behavior+=Statemachine )+
+		//        )*
+		//        main=MoeBehavior
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
 		////
-		////		compositePart=CompositePart
+		////        compositePart=CompositePart
 		////
-		////		behaviorPart=BehaviorPart
-		//'}'
+		////        behaviorPart=BehaviorPart
+		//        '}'
 		public Group getGroup() { return cGroup; }
 		
-		//(visibility=VisibilityKind? & timed?='timed'? & dense_timed?='timed#dense'? & discrete_timed?='timed#discrete'? &
-		//input_enabled?='input_enabled'? & unsafe?='unsafe'?)
+		//( ( visibility=VisibilityKind )?
+		//       & ( timed?='timed' )?
+		//       & ( dense_timed?='timed#dense' )?
+		//       & ( discrete_timed?='timed#discrete' )?
+		//       & ( input_enabled ?= 'input_enabled' )?
+		//       & ( unsafe ?= 'unsafe' )?
+		//       )
 		public UnorderedGroup getUnorderedGroup_0() { return cUnorderedGroup_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_0_0() { return cVisibilityAssignment_0_0; }
 		
 		//VisibilityKind
 		public RuleCall getVisibilityVisibilityKindEnumRuleCall_0_0_0() { return cVisibilityVisibilityKindEnumRuleCall_0_0_0; }
 		
-		//timed?='timed'?
+		//( timed?='timed' )?
 		public Assignment getTimedAssignment_0_1() { return cTimedAssignment_0_1; }
 		
 		//'timed'
 		public Keyword getTimedTimedKeyword_0_1_0() { return cTimedTimedKeyword_0_1_0; }
 		
-		//dense_timed?='timed#dense'?
+		//( dense_timed?='timed#dense' )?
 		public Assignment getDense_timedAssignment_0_2() { return cDense_timedAssignment_0_2; }
 		
 		//'timed#dense'
 		public Keyword getDense_timedTimedDenseKeyword_0_2_0() { return cDense_timedTimedDenseKeyword_0_2_0; }
 		
-		//discrete_timed?='timed#discrete'?
+		//( discrete_timed?='timed#discrete' )?
 		public Assignment getDiscrete_timedAssignment_0_3() { return cDiscrete_timedAssignment_0_3; }
 		
 		//'timed#discrete'
 		public Keyword getDiscrete_timedTimedDiscreteKeyword_0_3_0() { return cDiscrete_timedTimedDiscreteKeyword_0_3_0; }
 		
-		//input_enabled?='input_enabled'?
+		//( input_enabled ?= 'input_enabled' )?
 		public Assignment getInput_enabledAssignment_0_4() { return cInput_enabledAssignment_0_4; }
 		
 		//'input_enabled'
 		public Keyword getInput_enabledInput_enabledKeyword_0_4_0() { return cInput_enabledInput_enabledKeyword_0_4_0; }
 		
-		//unsafe?='unsafe'?
+		//( unsafe ?= 'unsafe' )?
 		public Assignment getUnsafeAssignment_0_5() { return cUnsafeAssignment_0_5; }
 		
 		//'unsafe'
@@ -1871,16 +2132,16 @@
 		//'system'
 		public Keyword getSystemKeyword_1() { return cSystemKeyword_1; }
 		
-		//('<' 'moc:'? ('and' | 'or') '>')?
+		//('<' ( 'moc:' )? ( 'and' | 'or' ) '>')?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_2_1() { return cMocKeyword_2_1; }
 		
-		//('and' | 'or')
+		//( 'and' | 'or' )
 		public Alternatives getAlternatives_2_2() { return cAlternatives_2_2; }
 		
 		//'and'
@@ -1898,7 +2159,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -1907,8 +2168,43 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//        ( // optional unnamed section for property full declaration / definition
+		////            ( 'port'
+		////                ( port+=PortImpl
+		////                | '{' ( port+=PortImpl )+ '}'
+		////                )
+		////            | 'signal'
+		////                ( signal+=SignalImpl
+		////                | '{' ( signal+=SignalImpl )+ '}'
+		////                )
+		////            | 'buffer'
+		////                ( buffer+=BufferImpl
+		////                | '{' ( buffer+=BufferImpl )+ '}'
+		////                )
+		////            | channel+=Channel
+		////            | 'type'
+		////                ( typedef+=TypeDefinitionImpl
+		////                | '{' ( typedef+=TypeDefinitionImpl )+ '}'
+		////                )
+		////            | 'var'
+		////                ( property+=VariableImpl
+		////                | '{' ( variable+=VariableImpl )+ '}'
+		////                )
+		////            | ( 'val' | 'const' )
+		////                ( variable+=VariableImpl
+		////                | '{' ( variable+=VariableImpl )+ '}'
+		////                )
+		////            | variable+=Variable
+		////            )*
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
 		public Alternatives getAlternatives_6() { return cAlternatives_6; }
 		
 		//port+=Port
@@ -1953,24 +2249,67 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_6_6_0() { return cVariableVariableParserRuleCall_6_6_0; }
 		
-		//('@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)* | '@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic
-		//| channel+=ChannelPublic | typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)* |
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)* | '@private:' (port+=PortPrivate
-		//| signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*)*
+		//( '@property:'
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//| '@public:'
+		//    ( port+=PortPublic
+		//    | signal+=SignalPublic
+		//    | buffer+=BufferPublic
+		//    | channel+=ChannelPublic
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPublic
+		//    | variable+=VariablePublic
+		//    )*
+		//| '@protected:'
+		//    ( port+=PortProtected
+		//    | signal+=SignalProtected
+		//    | buffer+=BufferProtected
+		//    | channel+=ChannelProtected
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionProtected
+		//    | variable+=VariableProtected
+		//    )*
+		//| '@private:'
+		//    ( port+=PortPrivate
+		//    | signal+=SignalPrivate
+		//    | buffer+=BufferPrivate
+		//    | channel+=ChannelPrivate
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPrivate
+		//    | variable+=VariablePrivate
+		//    )*
+		//)*
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
-		//'@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)*
+		//'@property:'
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Group getGroup_7_0() { return cGroup_7_0; }
 		
 		//'@property:'
 		public Keyword getPropertyKeyword_7_0_0() { return cPropertyKeyword_7_0_0; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//( port+=Port
+		//| signal+=Signal
+		//| buffer+=Buffer
+		//| channel+=Channel
+		//| typedef+=TypeDefinition
+		//| function+=Function
+		//| variable+=Variable
+		//)*
 		public Alternatives getAlternatives_7_0_1() { return cAlternatives_7_0_1; }
 		
 		//port+=Port
@@ -2015,15 +2354,28 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_7_0_1_6_0() { return cVariableVariableParserRuleCall_7_0_1_6_0; }
 		
-		//'@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic |
-		//typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)*
+		//'@public:'
+		//           ( port+=PortPublic
+		//           | signal+=SignalPublic
+		//           | buffer+=BufferPublic
+		//           | channel+=ChannelPublic
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPublic
+		//           | variable+=VariablePublic
+		//           )*
 		public Group getGroup_7_1() { return cGroup_7_1; }
 		
 		//'@public:'
 		public Keyword getPublicKeyword_7_1_0() { return cPublicKeyword_7_1_0; }
 		
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)*
+		//( port+=PortPublic
+		//| signal+=SignalPublic
+		//| buffer+=BufferPublic
+		//| channel+=ChannelPublic
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPublic
+		//| variable+=VariablePublic
+		//)*
 		public Alternatives getAlternatives_7_1_1() { return cAlternatives_7_1_1; }
 		
 		//port+=PortPublic
@@ -2068,15 +2420,28 @@
 		//VariablePublic
 		public RuleCall getVariableVariablePublicParserRuleCall_7_1_1_6_0() { return cVariableVariablePublicParserRuleCall_7_1_1_6_0; }
 		
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//'@protected:'
+		//           ( port+=PortProtected
+		//           | signal+=SignalProtected
+		//           | buffer+=BufferProtected
+		//           | channel+=ChannelProtected
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionProtected
+		//           | variable+=VariableProtected
+		//           )*
 		public Group getGroup_7_2() { return cGroup_7_2; }
 		
 		//'@protected:'
 		public Keyword getProtectedKeyword_7_2_0() { return cProtectedKeyword_7_2_0; }
 		
-		//(port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//( port+=PortProtected
+		//| signal+=SignalProtected
+		//| buffer+=BufferProtected
+		//| channel+=ChannelProtected
+		//| typedef+=TypeDefinition
+		//| function+=FunctionProtected
+		//| variable+=VariableProtected
+		//)*
 		public Alternatives getAlternatives_7_2_1() { return cAlternatives_7_2_1; }
 		
 		//port+=PortProtected
@@ -2121,15 +2486,28 @@
 		//VariableProtected
 		public RuleCall getVariableVariableProtectedParserRuleCall_7_2_1_6_0() { return cVariableVariableProtectedParserRuleCall_7_2_1_6_0; }
 		
-		//'@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate |
-		//typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*
+		//'@private:'
+		//           ( port+=PortPrivate
+		//           | signal+=SignalPrivate
+		//           | buffer+=BufferPrivate
+		//           | channel+=ChannelPrivate
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPrivate
+		//           | variable+=VariablePrivate
+		//           )*
 		public Group getGroup_7_3() { return cGroup_7_3; }
 		
 		//'@private:'
 		public Keyword getPrivateKeyword_7_3_0() { return cPrivateKeyword_7_3_0; }
 		
-		//(port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*
+		//( port+=PortPrivate
+		//| signal+=SignalPrivate
+		//| buffer+=BufferPrivate
+		//| channel+=ChannelPrivate
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPrivate
+		//| variable+=VariablePrivate
+		//)*
 		public Alternatives getAlternatives_7_3_1() { return cAlternatives_7_3_1; }
 		
 		//port+=PortPrivate
@@ -2174,17 +2552,22 @@
 		//VariablePrivate
 		public RuleCall getVariableVariablePrivateParserRuleCall_7_3_1_6_0() { return cVariableVariablePrivateParserRuleCall_7_3_1_6_0; }
 		
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+)
+		//( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//  | '@procedure:' ( procedure+=Procedure )+
+		//  )*
+		//| ( routine+=Routine | procedure+=Procedure )+
+		//)
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
-		//(('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)*
+		//( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//         | '@procedure:' ( procedure+=Procedure )+
+		//         )*
 		public Alternatives getAlternatives_8_0() { return cAlternatives_8_0; }
 		
-		//('@routine:' | '@macro:') routine+=Routine+
+		//( '@routine:' | '@macro:' ) ( routine+=Routine )+
 		public Group getGroup_8_0_0() { return cGroup_8_0_0; }
 		
-		//('@routine:' | '@macro:')
+		//( '@routine:' | '@macro:' )
 		public Alternatives getAlternatives_8_0_0_0() { return cAlternatives_8_0_0_0; }
 		
 		//'@routine:'
@@ -2193,25 +2576,25 @@
 		//'@macro:'
 		public Keyword getMacroKeyword_8_0_0_0_1() { return cMacroKeyword_8_0_0_0_1; }
 		
-		//routine+=Routine+
+		//( routine+=Routine )+
 		public Assignment getRoutineAssignment_8_0_0_1() { return cRoutineAssignment_8_0_0_1; }
 		
 		//Routine
 		public RuleCall getRoutineRoutineParserRuleCall_8_0_0_1_0() { return cRoutineRoutineParserRuleCall_8_0_0_1_0; }
 		
-		//'@procedure:' procedure+=Procedure+
+		//'@procedure:' ( procedure+=Procedure )+
 		public Group getGroup_8_0_1() { return cGroup_8_0_1; }
 		
 		//'@procedure:'
 		public Keyword getProcedureKeyword_8_0_1_0() { return cProcedureKeyword_8_0_1_0; }
 		
-		//procedure+=Procedure+
+		//( procedure+=Procedure )+
 		public Assignment getProcedureAssignment_8_0_1_1() { return cProcedureAssignment_8_0_1_1; }
 		
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_8_0_1_1_0() { return cProcedureProcedureParserRuleCall_8_0_1_1_0; }
 		
-		//(routine+=Routine | procedure+=Procedure)+
+		//( routine+=Routine | procedure+=Procedure )+
 		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
 		
 		//routine+=Routine
@@ -2226,14 +2609,23 @@
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_8_1_1_0() { return cProcedureProcedureParserRuleCall_8_1_1_0; }
 		
-		//(('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+ | '@model:'
-		//machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* | '@instance:' instance+=InstanceMachine*)*
+		//( ( '@composite:' | '@machine:' )
+		//    ( machine +=AnyMachineBlock
+		//    | instance+=InstanceMachine
+		//    )+
+		//| '@model:'     ( machine +=AnyMachineBlock )*
+		//| '@prototype:' ( machine +=AnyMachineBlock )*
+		//| '@instance:'  ( instance+=InstanceMachine )*
+		//)*
 		public Alternatives getAlternatives_9() { return cAlternatives_9; }
 		
-		//('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+
+		//( '@composite:' | '@machine:' )
+		//           ( machine +=AnyMachineBlock
+		//           | instance+=InstanceMachine
+		//           )+
 		public Group getGroup_9_0() { return cGroup_9_0; }
 		
-		//('@composite:' | '@machine:')
+		//( '@composite:' | '@machine:' )
 		public Alternatives getAlternatives_9_0_0() { return cAlternatives_9_0_0; }
 		
 		//'@composite:'
@@ -2242,10 +2634,12 @@
 		//'@machine:'
 		public Keyword getMachineKeyword_9_0_0_1() { return cMachineKeyword_9_0_0_1; }
 		
-		//(machine+=AnyMachineBlock | instance+=InstanceMachine)+
+		//( machine +=AnyMachineBlock
+		//| instance+=InstanceMachine
+		//)+
 		public Alternatives getAlternatives_9_0_1() { return cAlternatives_9_0_1; }
 		
-		//machine+=AnyMachineBlock
+		//machine +=AnyMachineBlock
 		public Assignment getMachineAssignment_9_0_1_0() { return cMachineAssignment_9_0_1_0; }
 		
 		//AnyMachineBlock
@@ -2257,64 +2651,66 @@
 		//InstanceMachine
 		public RuleCall getInstanceInstanceMachineParserRuleCall_9_0_1_1_0() { return cInstanceInstanceMachineParserRuleCall_9_0_1_1_0; }
 		
-		//'@model:' machine+=AnyMachineBlock*
+		//'@model:'     ( machine +=AnyMachineBlock )*
 		public Group getGroup_9_1() { return cGroup_9_1; }
 		
 		//'@model:'
 		public Keyword getModelKeyword_9_1_0() { return cModelKeyword_9_1_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_9_1_1() { return cMachineAssignment_9_1_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_9_1_1_0() { return cMachineAnyMachineBlockParserRuleCall_9_1_1_0; }
 		
-		//'@prototype:' machine+=AnyMachineBlock*
+		//'@prototype:' ( machine +=AnyMachineBlock )*
 		public Group getGroup_9_2() { return cGroup_9_2; }
 		
 		//'@prototype:'
 		public Keyword getPrototypeKeyword_9_2_0() { return cPrototypeKeyword_9_2_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_9_2_1() { return cMachineAssignment_9_2_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_9_2_1_0() { return cMachineAnyMachineBlockParserRuleCall_9_2_1_0; }
 		
-		//'@instance:' instance+=InstanceMachine*
+		//'@instance:'  ( instance+=InstanceMachine )*
 		public Group getGroup_9_3() { return cGroup_9_3; }
 		
 		//'@instance:'
 		public Keyword getInstanceKeyword_9_3_0() { return cInstanceKeyword_9_3_0; }
 		
-		//instance+=InstanceMachine*
+		//( instance+=InstanceMachine )*
 		public Assignment getInstanceAssignment_9_3_1() { return cInstanceAssignment_9_3_1; }
 		
 		//InstanceMachine
 		public RuleCall getInstanceInstanceMachineParserRuleCall_9_3_1_0() { return cInstanceInstanceMachineParserRuleCall_9_3_1_0; }
 		
-		//('@behavior:' behavior+=Behavior+ | '@statemachine:' behavior+=Statemachine+)*
+		//( '@behavior:'     ( behavior+=Behavior )+
+		//| '@statemachine:' ( behavior+=Statemachine )+
+		//)*
 		public Alternatives getAlternatives_10() { return cAlternatives_10; }
 		
-		//'@behavior:' behavior+=Behavior+
+		//'@behavior:'     ( behavior+=Behavior )+
 		public Group getGroup_10_0() { return cGroup_10_0; }
 		
 		//'@behavior:'
 		public Keyword getBehaviorKeyword_10_0_0() { return cBehaviorKeyword_10_0_0; }
 		
-		//behavior+=Behavior+
+		//( behavior+=Behavior )+
 		public Assignment getBehaviorAssignment_10_0_1() { return cBehaviorAssignment_10_0_1; }
 		
 		//Behavior
 		public RuleCall getBehaviorBehaviorParserRuleCall_10_0_1_0() { return cBehaviorBehaviorParserRuleCall_10_0_1_0; }
 		
-		//'@statemachine:' behavior+=Statemachine+
+		//'@statemachine:' ( behavior+=Statemachine )+
 		public Group getGroup_10_1() { return cGroup_10_1; }
 		
 		//'@statemachine:'
 		public Keyword getStatemachineKeyword_10_1_0() { return cStatemachineKeyword_10_1_0; }
 		
-		//behavior+=Statemachine+
+		//( behavior+=Statemachine )+
 		public Assignment getBehaviorAssignment_10_1_1() { return cBehaviorAssignment_10_1_1; }
 		
 		//Statemachine
@@ -2326,13 +2722,13 @@
 		//MoeBehavior
 		public RuleCall getMainMoeBehaviorParserRuleCall_11_0() { return cMainMoeBehaviorParserRuleCall_11_0; }
 		
-		////		// optional unnamed section for property full declaration / definition
-		////		propertyPart=PropertyPart
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
 		////
-		////		compositePart=CompositePart
+		////        compositePart=CompositePart
 		////
-		////		behaviorPart=BehaviorPart
-		//'}'
+		////        behaviorPart=BehaviorPart
+		//        '}'
 		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
 	}
 	public class AnyMachineBlockElements extends AbstractParserRuleElementFinder {
@@ -2341,12 +2737,14 @@
 		private final RuleCall cMachineBlockParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cStatemachineParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//AnyMachineBlock fmlInfra::Machine:
-		//	MachineBlock
-		//	| Statemachine;
+		//AnyMachineBlock returns fmlInfra::Machine
+		//    : MachineBlock
+		//    | Statemachine
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//MachineBlock | Statemachine
+		//MachineBlock
+		//   | Statemachine
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//MachineBlock
@@ -2392,23 +2790,30 @@
 		private final Keyword cRightCurlyBracketKeyword_9_0_2 = (Keyword)cGroup_9_0.eContents().get(2);
 		private final Keyword cSemicolonKeyword_9_1 = (Keyword)cAlternatives_9.eContents().get(1);
 		
-		//InstanceMachine fmlInfra::InstanceMachine:
-		//	'instance' ('machine' | 'statemachine')?
-		//	'<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' (slot+=SlotParameter (',' slot+=SlotParameter)*)? ')')? ('{'
-		//	(slot+=SlotProperty ';')* '}'
-		//	| ';');
+		//InstanceMachine returns fmlInfra::InstanceMachine
+		//    : 'instance' ( 'machine' | 'statemachine' ) ?
+		//        '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
+		//        ( '{'  ( slot+=SlotProperty ';' )*  '}'
+		//        | ';'
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'instance' ('machine' | 'statemachine')? '<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('(' (slot+=SlotParameter (',' slot+=SlotParameter)*)? ')')? ('{'
-		//(slot+=SlotProperty ';')* '}' | ';')
+		//'instance' ( 'machine' | 'statemachine' ) ?
+		//       '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
+		//       ( '{'  ( slot+=SlotProperty ';' )*  '}'
+		//       | ';'
+		//       )
 		public Group getGroup() { return cGroup; }
 		
 		//'instance'
 		public Keyword getInstanceKeyword_0() { return cInstanceKeyword_0; }
 		
-		//('machine' | 'statemachine')?
+		//( 'machine' | 'statemachine' ) ?
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'machine'
@@ -2420,7 +2825,7 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_2() { return cLessThanSignKeyword_2; }
 		
-		//'model:'?
+		//( 'model:' )?
 		public Keyword getModelKeyword_3() { return cModelKeyword_3; }
 		
 		//model=[fmlInfra::Machine|ESUfid]
@@ -2441,19 +2846,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_6_0() { return cNameESIdentifierParserRuleCall_6_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_7() { return cUnrestrictedNameAssignment_7; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_7_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_7_0; }
 		
-		//('(' (slot+=SlotParameter (',' slot+=SlotParameter)*)? ')')?
+		//( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
 		public Group getGroup_8() { return cGroup_8; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_8_0() { return cLeftParenthesisKeyword_8_0; }
 		
-		//(slot+=SlotParameter (',' slot+=SlotParameter)*)?
+		//( slot+=SlotParameter ( ',' slot+=SlotParameter )* )?
 		public Group getGroup_8_1() { return cGroup_8_1; }
 		
 		//slot+=SlotParameter
@@ -2462,7 +2867,7 @@
 		//SlotParameter
 		public RuleCall getSlotSlotParameterParserRuleCall_8_1_0_0() { return cSlotSlotParameterParserRuleCall_8_1_0_0; }
 		
-		//(',' slot+=SlotParameter)*
+		//( ',' slot+=SlotParameter )*
 		public Group getGroup_8_1_1() { return cGroup_8_1_1; }
 		
 		//','
@@ -2477,16 +2882,18 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_8_2() { return cRightParenthesisKeyword_8_2; }
 		
-		//('{' (slot+=SlotProperty ';')* '}' | ';')
+		//( '{'  ( slot+=SlotProperty ';' )*  '}'
+		//| ';'
+		//)
 		public Alternatives getAlternatives_9() { return cAlternatives_9; }
 		
-		//'{' (slot+=SlotProperty ';')* '}'
+		//'{'  ( slot+=SlotProperty ';' )*  '}'
 		public Group getGroup_9_0() { return cGroup_9_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_9_0_0() { return cLeftCurlyBracketKeyword_9_0_0; }
 		
-		//(slot+=SlotProperty ';')*
+		//( slot+=SlotProperty ';' )*
 		public Group getGroup_9_0_1() { return cGroup_9_0_1; }
 		
 		//slot+=SlotProperty
@@ -2518,14 +2925,21 @@
 		private final Assignment cValueAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cValueExpressionParserRuleCall_2_0 = (RuleCall)cValueAssignment_2.eContents().get(0);
 		
-		//SlotParameter fmlInfra::SlotProperty:
-		//	xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier] (':' | '=' | ':=' | '::=') value=Expression;
+		//SlotParameter returns fmlInfra::SlotProperty
+		//    : ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		////      | umlProperty=[uml::Property|ESIdentifier]
+		//      )  ( ':' | '='  | ':=' | '::=' )  value=Expression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier] (':' | '=' | ':=' | '::=') value=Expression
+		// ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		////      | umlProperty=[uml::Property|ESIdentifier]
+		//      )  ( ':' | '='  | ':=' | '::=' )  value=Expression
 		public Group getGroup() { return cGroup; }
 		
-		//xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		// ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		////      | umlProperty=[uml::Property|ESIdentifier]
+		//      )
 		public Assignment getXliaPropertyAssignment_0() { return cXliaPropertyAssignment_0; }
 		
 		//[fmlInfra::PropertyDefinition|ESIdentifier]
@@ -2534,7 +2948,7 @@
 		//ESIdentifier
 		public RuleCall getXliaPropertyPropertyDefinitionESIdentifierParserRuleCall_0_0_1() { return cXliaPropertyPropertyDefinitionESIdentifierParserRuleCall_0_0_1; }
 		
-		//(':' | '=' | ':=' | '::=')
+		//( ':' | '='  | ':=' | '::=' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//':'
@@ -2569,14 +2983,21 @@
 		private final Assignment cValueAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cValueExpressionParserRuleCall_2_0 = (RuleCall)cValueAssignment_2.eContents().get(0);
 		
-		//SlotProperty fmlInfra::SlotProperty:
-		//	xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier] ('=' | ':' | ':=' | '::=') value=Expression;
+		//SlotProperty returns fmlInfra::SlotProperty
+		//    : ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		////      | umlProperty=[uml::Property|ESIdentifier]
+		//      ) ( '='  | ':' | ':=' | '::=' )  value=Expression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier] ('=' | ':' | ':=' | '::=') value=Expression
+		// ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		////      | umlProperty=[uml::Property|ESIdentifier]
+		//      ) ( '='  | ':' | ':=' | '::=' )  value=Expression
 		public Group getGroup() { return cGroup; }
 		
-		//xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		// ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+		////      | umlProperty=[uml::Property|ESIdentifier]
+		//      )
 		public Assignment getXliaPropertyAssignment_0() { return cXliaPropertyAssignment_0; }
 		
 		//[fmlInfra::PropertyDefinition|ESIdentifier]
@@ -2585,7 +3006,7 @@
 		//ESIdentifier
 		public RuleCall getXliaPropertyPropertyDefinitionESIdentifierParserRuleCall_0_0_1() { return cXliaPropertyPropertyDefinitionESIdentifierParserRuleCall_0_0_1; }
 		
-		//('=' | ':' | ':=' | '::=')
+		//( '='  | ':' | ':=' | '::=' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'='
@@ -2786,139 +3207,237 @@
 		private final RuleCall cMainMoeBehaviorParserRuleCall_11_0 = (RuleCall)cMainAssignment_11.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
 		
-		//MachineBlock fmlInfra::Machine:
-		//	(visibility=VisibilityKind?
-		//	& timed?='timed'?
-		//	& dense_timed?='timed#dense'?
-		//	& discrete_timed?='timed#discrete'?
-		//	& input_enabled?='input_enabled'?
-		//	& lifeline?='lifeline'?
-		//	& design=DesignKind?) ('machine' | 'executable') ('<' ('moc:'? ModelOfComputationKing)? ('instance:' '[' ('+' | '*'
-		//	| 'init:' EInteger 'max:' EInteger) ']')? '>')?
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'{' (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*
-		//	('@property:' (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*
-		//	| '@public:' (port+=PortPublic
-		//	| signal+=SignalPublic
-		//	| buffer+=BufferPublic
-		//	| channel+=ChannelPublic
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPublic
-		//	| variable+=VariablePublic)*
-		//	| '@protected:' (port+=PortProtected
-		//	| signal+=SignalProtected
-		//	| buffer+=BufferProtected
-		//	| channel+=ChannelProtected
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionProtected
-		//	| variable+=VariableProtected)*
-		//	| '@private:' (port+=PortPrivate
-		//	| signal+=SignalPrivate
-		//	| buffer+=BufferPrivate
-		//	| channel+=ChannelPrivate
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPrivate
-		//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-		//	| '@procedure:' procedure+=Procedure+)*
-		//	| (routine+=Routine | procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock
-		//	| instance+=InstanceMachine)+
-		//	| '@model:' machine+=AnyMachineBlock*
-		//	| '@prototype:' machine+=AnyMachineBlock*
-		//	| '@instance:' instance+=InstanceMachine*)* ('@behavior:' behavior+=Behavior+
-		//	| '@statemachine:' behavior+=Statemachine+)*
-		//	main=MoeBehavior
-		//	//		// optional unnamed section for property full declaration / definition
-		//	//		propertyPart=PropertyPart
-		//	//
-		//	//		compositePart=CompositePart
-		//	//
-		//	//		behaviorPart=BehaviorPart
-		//	'}';
+		//MachineBlock returns fmlInfra::Machine
+		//    : ( ( visibility=VisibilityKind )?
+		//        & ( timed?='timed' )?
+		//        & ( dense_timed?='timed#dense' )?
+		//        & ( discrete_timed?='timed#discrete' )?
+		//        & ( input_enabled ?= 'input_enabled' )?
+		//        & ( lifeline?='lifeline' )?
+		//        & ( design=DesignKind )?
+		//        )
+		//        ( 'machine' | 'executable' )
+		//        ( '<' ( ( 'moc:' )?  ModelOfComputationKing )?
+		//            ( 'instance:' '[' ( '+' | '*'
+		//                | ( 'init:' EInteger 'max:' EInteger ) ) ']' )? '>'
+		//        )?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//        ( // optional unnamed section for property full declaration / definition
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine | procedure+=Procedure )+
+		//        )
+		//        ( ( '@composite:' | '@machine:' )
+		//            ( machine +=AnyMachineBlock
+		//            | instance+=InstanceMachine
+		//            )+
+		//        | '@model:'     ( machine +=AnyMachineBlock )*
+		//        | '@prototype:' ( machine +=AnyMachineBlock )*
+		//        | '@instance:'  ( instance+=InstanceMachine )*
+		//        )*
+		//        ( '@behavior:'     ( behavior+=Behavior )+
+		//        | '@statemachine:' ( behavior+=Statemachine )+
+		//        )*
+		//        main=MoeBehavior
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
+		////
+		////        compositePart=CompositePart
+		////
+		////        behaviorPart=BehaviorPart
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//(visibility=VisibilityKind? & timed?='timed'? & dense_timed?='timed#dense'? & discrete_timed?='timed#discrete'? &
-		//input_enabled?='input_enabled'? & lifeline?='lifeline'? & design=DesignKind?) ('machine' | 'executable') ('<' ('moc:'?
-		//ModelOfComputationKing)? ('instance:' '[' ('+' | '*' | 'init:' EInteger 'max:' EInteger) ']')? '>')? name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? '{' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel |
-		//typedef+=TypeDefinition | function+=Function | variable+=Variable)* ('@property:' (port+=Port | signal+=Signal |
-		//buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function | variable+=Variable)* | '@public:'
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)* | '@protected:' (port+=PortProtected | signal+=SignalProtected |
-		//buffer+=BufferProtected | channel+=ChannelProtected | typedef+=TypeDefinition | function+=FunctionProtected |
-		//variable+=VariableProtected)* | '@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate |
-		//channel+=ChannelPrivate | typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*)*
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+ |
-		//'@model:' machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* | '@instance:'
-		//instance+=InstanceMachine*)* ('@behavior:' behavior+=Behavior+ | '@statemachine:' behavior+=Statemachine+)*
-		//main=MoeBehavior //		// optional unnamed section for property full declaration / definition
-		////		propertyPart=PropertyPart
+		// ( ( visibility=VisibilityKind )?
+		//        & ( timed?='timed' )?
+		//        & ( dense_timed?='timed#dense' )?
+		//        & ( discrete_timed?='timed#discrete' )?
+		//        & ( input_enabled ?= 'input_enabled' )?
+		//        & ( lifeline?='lifeline' )?
+		//        & ( design=DesignKind )?
+		//        )
+		//        ( 'machine' | 'executable' )
+		//        ( '<' ( ( 'moc:' )?  ModelOfComputationKing )?
+		//            ( 'instance:' '[' ( '+' | '*'
+		//                | ( 'init:' EInteger 'max:' EInteger ) ) ']' )? '>'
+		//        )?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//        ( // optional unnamed section for property full declaration / definition
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine | procedure+=Procedure )+
+		//        )
+		//        ( ( '@composite:' | '@machine:' )
+		//            ( machine +=AnyMachineBlock
+		//            | instance+=InstanceMachine
+		//            )+
+		//        | '@model:'     ( machine +=AnyMachineBlock )*
+		//        | '@prototype:' ( machine +=AnyMachineBlock )*
+		//        | '@instance:'  ( instance+=InstanceMachine )*
+		//        )*
+		//        ( '@behavior:'     ( behavior+=Behavior )+
+		//        | '@statemachine:' ( behavior+=Statemachine )+
+		//        )*
+		//        main=MoeBehavior
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
 		////
-		////		compositePart=CompositePart
+		////        compositePart=CompositePart
 		////
-		////		behaviorPart=BehaviorPart
-		//'}'
+		////        behaviorPart=BehaviorPart
+		//        '}'
 		public Group getGroup() { return cGroup; }
 		
-		//(visibility=VisibilityKind? & timed?='timed'? & dense_timed?='timed#dense'? & discrete_timed?='timed#discrete'? &
-		//input_enabled?='input_enabled'? & lifeline?='lifeline'? & design=DesignKind?)
+		//( ( visibility=VisibilityKind )?
+		//       & ( timed?='timed' )?
+		//       & ( dense_timed?='timed#dense' )?
+		//       & ( discrete_timed?='timed#discrete' )?
+		//       & ( input_enabled ?= 'input_enabled' )?
+		//       & ( lifeline?='lifeline' )?
+		//       & ( design=DesignKind )?
+		//       )
 		public UnorderedGroup getUnorderedGroup_0() { return cUnorderedGroup_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_0_0() { return cVisibilityAssignment_0_0; }
 		
 		//VisibilityKind
 		public RuleCall getVisibilityVisibilityKindEnumRuleCall_0_0_0() { return cVisibilityVisibilityKindEnumRuleCall_0_0_0; }
 		
-		//timed?='timed'?
+		//( timed?='timed' )?
 		public Assignment getTimedAssignment_0_1() { return cTimedAssignment_0_1; }
 		
 		//'timed'
 		public Keyword getTimedTimedKeyword_0_1_0() { return cTimedTimedKeyword_0_1_0; }
 		
-		//dense_timed?='timed#dense'?
+		//( dense_timed?='timed#dense' )?
 		public Assignment getDense_timedAssignment_0_2() { return cDense_timedAssignment_0_2; }
 		
 		//'timed#dense'
 		public Keyword getDense_timedTimedDenseKeyword_0_2_0() { return cDense_timedTimedDenseKeyword_0_2_0; }
 		
-		//discrete_timed?='timed#discrete'?
+		//( discrete_timed?='timed#discrete' )?
 		public Assignment getDiscrete_timedAssignment_0_3() { return cDiscrete_timedAssignment_0_3; }
 		
 		//'timed#discrete'
 		public Keyword getDiscrete_timedTimedDiscreteKeyword_0_3_0() { return cDiscrete_timedTimedDiscreteKeyword_0_3_0; }
 		
-		//input_enabled?='input_enabled'?
+		//( input_enabled ?= 'input_enabled' )?
 		public Assignment getInput_enabledAssignment_0_4() { return cInput_enabledAssignment_0_4; }
 		
 		//'input_enabled'
 		public Keyword getInput_enabledInput_enabledKeyword_0_4_0() { return cInput_enabledInput_enabledKeyword_0_4_0; }
 		
-		//lifeline?='lifeline'?
+		//( lifeline?='lifeline' )?
 		public Assignment getLifelineAssignment_0_5() { return cLifelineAssignment_0_5; }
 		
 		//'lifeline'
 		public Keyword getLifelineLifelineKeyword_0_5_0() { return cLifelineLifelineKeyword_0_5_0; }
 		
-		//design=DesignKind?
+		//( design=DesignKind )?
 		public Assignment getDesignAssignment_0_6() { return cDesignAssignment_0_6; }
 		
 		//DesignKind
 		public RuleCall getDesignDesignKindEnumRuleCall_0_6_0() { return cDesignDesignKindEnumRuleCall_0_6_0; }
 		
-		//('machine' | 'executable')
+		//( 'machine' | 'executable' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'machine'
@@ -2927,22 +3446,26 @@
 		//'executable'
 		public Keyword getExecutableKeyword_1_1() { return cExecutableKeyword_1_1; }
 		
-		//('<' ('moc:'? ModelOfComputationKing)? ('instance:' '[' ('+' | '*' | 'init:' EInteger 'max:' EInteger) ']')? '>')?
+		//( '<' ( ( 'moc:' )?  ModelOfComputationKing )?
+		//    ( 'instance:' '[' ( '+' | '*'
+		//        | ( 'init:' EInteger 'max:' EInteger ) ) ']' )? '>'
+		//)?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//('moc:'? ModelOfComputationKing)?
+		//( ( 'moc:' )?  ModelOfComputationKing )?
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_2_1_0() { return cMocKeyword_2_1_0; }
 		
 		//ModelOfComputationKing
 		public RuleCall getModelOfComputationKingParserRuleCall_2_1_1() { return cModelOfComputationKingParserRuleCall_2_1_1; }
 		
-		//('instance:' '[' ('+' | '*' | 'init:' EInteger 'max:' EInteger) ']')?
+		//( 'instance:' '[' ( '+' | '*'
+		//    | ( 'init:' EInteger 'max:' EInteger ) ) ']' )?
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//'instance:'
@@ -2951,7 +3474,8 @@
 		//'['
 		public Keyword getLeftSquareBracketKeyword_2_2_1() { return cLeftSquareBracketKeyword_2_2_1; }
 		
-		//('+' | '*' | 'init:' EInteger 'max:' EInteger)
+		//( '+' | '*'
+		//               | ( 'init:' EInteger 'max:' EInteger ) )
 		public Alternatives getAlternatives_2_2_2() { return cAlternatives_2_2_2; }
 		
 		//'+'
@@ -2960,7 +3484,7 @@
 		//'*'
 		public Keyword getAsteriskKeyword_2_2_2_1() { return cAsteriskKeyword_2_2_2_1; }
 		
-		//'init:' EInteger 'max:' EInteger
+		//( 'init:' EInteger 'max:' EInteger )
 		public Group getGroup_2_2_2_2() { return cGroup_2_2_2_2; }
 		
 		//'init:'
@@ -2987,7 +3511,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -2996,8 +3520,16 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//( // optional unnamed section for property full declaration / definition
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//)
 		public Alternatives getAlternatives_6() { return cAlternatives_6; }
 		
 		//port+=Port
@@ -3042,24 +3574,67 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_6_6_0() { return cVariableVariableParserRuleCall_6_6_0; }
 		
-		//('@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)* | '@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic
-		//| channel+=ChannelPublic | typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)* |
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)* | '@private:' (port+=PortPrivate
-		//| signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*)*
+		//( '@property:'
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//| '@public:'
+		//    ( port+=PortPublic
+		//    | signal+=SignalPublic
+		//    | buffer+=BufferPublic
+		//    | channel+=ChannelPublic
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPublic
+		//    | variable+=VariablePublic
+		//    )*
+		//| '@protected:'
+		//    ( port+=PortProtected
+		//    | signal+=SignalProtected
+		//    | buffer+=BufferProtected
+		//    | channel+=ChannelProtected
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionProtected
+		//    | variable+=VariableProtected
+		//    )*
+		//| '@private:'
+		//    ( port+=PortPrivate
+		//    | signal+=SignalPrivate
+		//    | buffer+=BufferPrivate
+		//    | channel+=ChannelPrivate
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPrivate
+		//    | variable+=VariablePrivate
+		//    )*
+		//)*
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
-		//'@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)*
+		//'@property:'
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Group getGroup_7_0() { return cGroup_7_0; }
 		
 		//'@property:'
 		public Keyword getPropertyKeyword_7_0_0() { return cPropertyKeyword_7_0_0; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//( port+=Port
+		//| signal+=Signal
+		//| buffer+=Buffer
+		//| channel+=Channel
+		//| typedef+=TypeDefinition
+		//| function+=Function
+		//| variable+=Variable
+		//)*
 		public Alternatives getAlternatives_7_0_1() { return cAlternatives_7_0_1; }
 		
 		//port+=Port
@@ -3104,15 +3679,28 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_7_0_1_6_0() { return cVariableVariableParserRuleCall_7_0_1_6_0; }
 		
-		//'@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic |
-		//typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)*
+		//'@public:'
+		//           ( port+=PortPublic
+		//           | signal+=SignalPublic
+		//           | buffer+=BufferPublic
+		//           | channel+=ChannelPublic
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPublic
+		//           | variable+=VariablePublic
+		//           )*
 		public Group getGroup_7_1() { return cGroup_7_1; }
 		
 		//'@public:'
 		public Keyword getPublicKeyword_7_1_0() { return cPublicKeyword_7_1_0; }
 		
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)*
+		//( port+=PortPublic
+		//| signal+=SignalPublic
+		//| buffer+=BufferPublic
+		//| channel+=ChannelPublic
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPublic
+		//| variable+=VariablePublic
+		//)*
 		public Alternatives getAlternatives_7_1_1() { return cAlternatives_7_1_1; }
 		
 		//port+=PortPublic
@@ -3157,15 +3745,28 @@
 		//VariablePublic
 		public RuleCall getVariableVariablePublicParserRuleCall_7_1_1_6_0() { return cVariableVariablePublicParserRuleCall_7_1_1_6_0; }
 		
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//'@protected:'
+		//           ( port+=PortProtected
+		//           | signal+=SignalProtected
+		//           | buffer+=BufferProtected
+		//           | channel+=ChannelProtected
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionProtected
+		//           | variable+=VariableProtected
+		//           )*
 		public Group getGroup_7_2() { return cGroup_7_2; }
 		
 		//'@protected:'
 		public Keyword getProtectedKeyword_7_2_0() { return cProtectedKeyword_7_2_0; }
 		
-		//(port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//( port+=PortProtected
+		//| signal+=SignalProtected
+		//| buffer+=BufferProtected
+		//| channel+=ChannelProtected
+		//| typedef+=TypeDefinition
+		//| function+=FunctionProtected
+		//| variable+=VariableProtected
+		//)*
 		public Alternatives getAlternatives_7_2_1() { return cAlternatives_7_2_1; }
 		
 		//port+=PortProtected
@@ -3210,15 +3811,28 @@
 		//VariableProtected
 		public RuleCall getVariableVariableProtectedParserRuleCall_7_2_1_6_0() { return cVariableVariableProtectedParserRuleCall_7_2_1_6_0; }
 		
-		//'@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate |
-		//typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*
+		//'@private:'
+		//           ( port+=PortPrivate
+		//           | signal+=SignalPrivate
+		//           | buffer+=BufferPrivate
+		//           | channel+=ChannelPrivate
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPrivate
+		//           | variable+=VariablePrivate
+		//           )*
 		public Group getGroup_7_3() { return cGroup_7_3; }
 		
 		//'@private:'
 		public Keyword getPrivateKeyword_7_3_0() { return cPrivateKeyword_7_3_0; }
 		
-		//(port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*
+		//( port+=PortPrivate
+		//| signal+=SignalPrivate
+		//| buffer+=BufferPrivate
+		//| channel+=ChannelPrivate
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPrivate
+		//| variable+=VariablePrivate
+		//)*
 		public Alternatives getAlternatives_7_3_1() { return cAlternatives_7_3_1; }
 		
 		//port+=PortPrivate
@@ -3263,17 +3877,22 @@
 		//VariablePrivate
 		public RuleCall getVariableVariablePrivateParserRuleCall_7_3_1_6_0() { return cVariableVariablePrivateParserRuleCall_7_3_1_6_0; }
 		
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+)
+		//( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//  | '@procedure:' ( procedure+=Procedure )+
+		//  )*
+		//| ( routine+=Routine | procedure+=Procedure )+
+		//)
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
-		//(('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)*
+		//( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//         | '@procedure:' ( procedure+=Procedure )+
+		//         )*
 		public Alternatives getAlternatives_8_0() { return cAlternatives_8_0; }
 		
-		//('@routine:' | '@macro:') routine+=Routine+
+		//( '@routine:' | '@macro:' ) ( routine+=Routine )+
 		public Group getGroup_8_0_0() { return cGroup_8_0_0; }
 		
-		//('@routine:' | '@macro:')
+		//( '@routine:' | '@macro:' )
 		public Alternatives getAlternatives_8_0_0_0() { return cAlternatives_8_0_0_0; }
 		
 		//'@routine:'
@@ -3282,25 +3901,25 @@
 		//'@macro:'
 		public Keyword getMacroKeyword_8_0_0_0_1() { return cMacroKeyword_8_0_0_0_1; }
 		
-		//routine+=Routine+
+		//( routine+=Routine )+
 		public Assignment getRoutineAssignment_8_0_0_1() { return cRoutineAssignment_8_0_0_1; }
 		
 		//Routine
 		public RuleCall getRoutineRoutineParserRuleCall_8_0_0_1_0() { return cRoutineRoutineParserRuleCall_8_0_0_1_0; }
 		
-		//'@procedure:' procedure+=Procedure+
+		//'@procedure:' ( procedure+=Procedure )+
 		public Group getGroup_8_0_1() { return cGroup_8_0_1; }
 		
 		//'@procedure:'
 		public Keyword getProcedureKeyword_8_0_1_0() { return cProcedureKeyword_8_0_1_0; }
 		
-		//procedure+=Procedure+
+		//( procedure+=Procedure )+
 		public Assignment getProcedureAssignment_8_0_1_1() { return cProcedureAssignment_8_0_1_1; }
 		
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_8_0_1_1_0() { return cProcedureProcedureParserRuleCall_8_0_1_1_0; }
 		
-		//(routine+=Routine | procedure+=Procedure)+
+		//( routine+=Routine | procedure+=Procedure )+
 		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
 		
 		//routine+=Routine
@@ -3315,14 +3934,23 @@
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_8_1_1_0() { return cProcedureProcedureParserRuleCall_8_1_1_0; }
 		
-		//(('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+ | '@model:'
-		//machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* | '@instance:' instance+=InstanceMachine*)*
+		//( ( '@composite:' | '@machine:' )
+		//    ( machine +=AnyMachineBlock
+		//    | instance+=InstanceMachine
+		//    )+
+		//| '@model:'     ( machine +=AnyMachineBlock )*
+		//| '@prototype:' ( machine +=AnyMachineBlock )*
+		//| '@instance:'  ( instance+=InstanceMachine )*
+		//)*
 		public Alternatives getAlternatives_9() { return cAlternatives_9; }
 		
-		//('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+
+		//( '@composite:' | '@machine:' )
+		//           ( machine +=AnyMachineBlock
+		//           | instance+=InstanceMachine
+		//           )+
 		public Group getGroup_9_0() { return cGroup_9_0; }
 		
-		//('@composite:' | '@machine:')
+		//( '@composite:' | '@machine:' )
 		public Alternatives getAlternatives_9_0_0() { return cAlternatives_9_0_0; }
 		
 		//'@composite:'
@@ -3331,10 +3959,12 @@
 		//'@machine:'
 		public Keyword getMachineKeyword_9_0_0_1() { return cMachineKeyword_9_0_0_1; }
 		
-		//(machine+=AnyMachineBlock | instance+=InstanceMachine)+
+		//( machine +=AnyMachineBlock
+		//| instance+=InstanceMachine
+		//)+
 		public Alternatives getAlternatives_9_0_1() { return cAlternatives_9_0_1; }
 		
-		//machine+=AnyMachineBlock
+		//machine +=AnyMachineBlock
 		public Assignment getMachineAssignment_9_0_1_0() { return cMachineAssignment_9_0_1_0; }
 		
 		//AnyMachineBlock
@@ -3346,64 +3976,66 @@
 		//InstanceMachine
 		public RuleCall getInstanceInstanceMachineParserRuleCall_9_0_1_1_0() { return cInstanceInstanceMachineParserRuleCall_9_0_1_1_0; }
 		
-		//'@model:' machine+=AnyMachineBlock*
+		//'@model:'     ( machine +=AnyMachineBlock )*
 		public Group getGroup_9_1() { return cGroup_9_1; }
 		
 		//'@model:'
 		public Keyword getModelKeyword_9_1_0() { return cModelKeyword_9_1_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_9_1_1() { return cMachineAssignment_9_1_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_9_1_1_0() { return cMachineAnyMachineBlockParserRuleCall_9_1_1_0; }
 		
-		//'@prototype:' machine+=AnyMachineBlock*
+		//'@prototype:' ( machine +=AnyMachineBlock )*
 		public Group getGroup_9_2() { return cGroup_9_2; }
 		
 		//'@prototype:'
 		public Keyword getPrototypeKeyword_9_2_0() { return cPrototypeKeyword_9_2_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_9_2_1() { return cMachineAssignment_9_2_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_9_2_1_0() { return cMachineAnyMachineBlockParserRuleCall_9_2_1_0; }
 		
-		//'@instance:' instance+=InstanceMachine*
+		//'@instance:'  ( instance+=InstanceMachine )*
 		public Group getGroup_9_3() { return cGroup_9_3; }
 		
 		//'@instance:'
 		public Keyword getInstanceKeyword_9_3_0() { return cInstanceKeyword_9_3_0; }
 		
-		//instance+=InstanceMachine*
+		//( instance+=InstanceMachine )*
 		public Assignment getInstanceAssignment_9_3_1() { return cInstanceAssignment_9_3_1; }
 		
 		//InstanceMachine
 		public RuleCall getInstanceInstanceMachineParserRuleCall_9_3_1_0() { return cInstanceInstanceMachineParserRuleCall_9_3_1_0; }
 		
-		//('@behavior:' behavior+=Behavior+ | '@statemachine:' behavior+=Statemachine+)*
+		//( '@behavior:'     ( behavior+=Behavior )+
+		//| '@statemachine:' ( behavior+=Statemachine )+
+		//)*
 		public Alternatives getAlternatives_10() { return cAlternatives_10; }
 		
-		//'@behavior:' behavior+=Behavior+
+		//'@behavior:'     ( behavior+=Behavior )+
 		public Group getGroup_10_0() { return cGroup_10_0; }
 		
 		//'@behavior:'
 		public Keyword getBehaviorKeyword_10_0_0() { return cBehaviorKeyword_10_0_0; }
 		
-		//behavior+=Behavior+
+		//( behavior+=Behavior )+
 		public Assignment getBehaviorAssignment_10_0_1() { return cBehaviorAssignment_10_0_1; }
 		
 		//Behavior
 		public RuleCall getBehaviorBehaviorParserRuleCall_10_0_1_0() { return cBehaviorBehaviorParserRuleCall_10_0_1_0; }
 		
-		//'@statemachine:' behavior+=Statemachine+
+		//'@statemachine:' ( behavior+=Statemachine )+
 		public Group getGroup_10_1() { return cGroup_10_1; }
 		
 		//'@statemachine:'
 		public Keyword getStatemachineKeyword_10_1_0() { return cStatemachineKeyword_10_1_0; }
 		
-		//behavior+=Statemachine+
+		//( behavior+=Statemachine )+
 		public Assignment getBehaviorAssignment_10_1_1() { return cBehaviorAssignment_10_1_1; }
 		
 		//Statemachine
@@ -3415,13 +4047,13 @@
 		//MoeBehavior
 		public RuleCall getMainMoeBehaviorParserRuleCall_11_0() { return cMainMoeBehaviorParserRuleCall_11_0; }
 		
-		////		// optional unnamed section for property full declaration / definition
-		////		propertyPart=PropertyPart
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
 		////
-		////		compositePart=CompositePart
+		////        compositePart=CompositePart
 		////
-		////		behaviorPart=BehaviorPart
-		//'}'
+		////        behaviorPart=BehaviorPart
+		//        '}'
 		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
 	}
 	public class PropertyPartElements extends AbstractParserRuleElementFinder {
@@ -3574,99 +4206,249 @@
 		private final Assignment cVariableAssignment_3_3_1_6 = (Assignment)cAlternatives_3_3_1.eContents().get(6);
 		private final RuleCall cVariableVariablePrivateParserRuleCall_3_3_1_6_0 = (RuleCall)cVariableAssignment_3_3_1_6.eContents().get(0);
 		
-		//PropertyPart fmlInfra::PropertyPart:
-		//	{fmlInfra::PropertyPart} ('@parameter:' ('input' (parameter+=ParameterInput
-		//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-		//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-		//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-		//	| '{' parameter+=ParameterReturn+ '}'))*
-		//	| (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*) ('@input:'
-		//	parameter+=ParameterInput*
-		//	| '@inout:'
-		//	parameter+=ParameterInout*
-		//	| '@output:'
-		//	parameter+=ParameterOutput*
-		//	| '@return:'
-		//	parameter+=ParameterReturn*)* ('@property:' (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*
-		//	| '@public:' (port+=PortPublic
-		//	| signal+=SignalPublic
-		//	| buffer+=BufferPublic
-		//	| channel+=ChannelPublic
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPublic
-		//	| variable+=VariablePublic)*
-		//	| '@protected:' (port+=PortProtected
-		//	| signal+=SignalProtected
-		//	| buffer+=BufferProtected
-		//	| channel+=ChannelProtected
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionProtected
-		//	| variable+=VariableProtected)*
-		//	| '@private:' (port+=PortPrivate
-		//	| signal+=SignalPrivate
-		//	| buffer+=BufferPrivate
-		//	| channel+=ChannelPrivate
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPrivate
-		//	| variable+=VariablePrivate)*)*;
+		//PropertyPart returns fmlInfra::PropertyPart
+		//    : {fmlInfra::PropertyPart}
+		//        ( '@parameter:'
+		//            ( 'input'
+		//                ( parameter+=ParameterInput
+		//                | '{' ( parameter+=ParameterInput )+ '}'
+		//                )
+		//            | 'inout'
+		//                ( parameter+=ParameterInout
+		//                | '{' ( parameter+=ParameterInout )+ '}'
+		//                )
+		//            | 'output'
+		//                ( parameter+=ParameterOutput
+		//                | '{' ( parameter+=ParameterOutput )+ '}'
+		//                )
+		//            | 'return'
+		//                ( parameter+=ParameterReturn
+		//                | '{' ( parameter+=ParameterReturn )+ '}'
+		//                )
+		//            )*
+		//        | // optional unnamed section for property full declaration / definition
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@input:'
+		//            ( parameter+=ParameterInput  )*
+		//        | '@inout:'
+		//            ( parameter+=ParameterInout  )*
+		//        | '@output:'
+		//            ( parameter+=ParameterOutput )*
+		//        | '@return:'
+		//            ( parameter+=ParameterReturn )*
+		//        )*
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::PropertyPart} ('@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') |
-		//'inout' (parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))* |
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*) ('@input:' parameter+=ParameterInput* | '@inout:' parameter+=ParameterInout* | '@output:'
-		//parameter+=ParameterOutput* | '@return:' parameter+=ParameterReturn*)* ('@property:' (port+=Port | signal+=Signal |
-		//buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function | variable+=Variable)* | '@public:'
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)* | '@protected:' (port+=PortProtected | signal+=SignalProtected |
-		//buffer+=BufferProtected | channel+=ChannelProtected | typedef+=TypeDefinition | function+=FunctionProtected |
-		//variable+=VariableProtected)* | '@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate |
-		//channel+=ChannelPrivate | typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*)*
+		//{fmlInfra::PropertyPart}
+		//       ( '@parameter:'
+		//           ( 'input'
+		//               ( parameter+=ParameterInput
+		//               | '{' ( parameter+=ParameterInput )+ '}'
+		//               )
+		//           | 'inout'
+		//               ( parameter+=ParameterInout
+		//               | '{' ( parameter+=ParameterInout )+ '}'
+		//               )
+		//           | 'output'
+		//               ( parameter+=ParameterOutput
+		//               | '{' ( parameter+=ParameterOutput )+ '}'
+		//               )
+		//           | 'return'
+		//               ( parameter+=ParameterReturn
+		//               | '{' ( parameter+=ParameterReturn )+ '}'
+		//               )
+		//           )*
+		//       | // optional unnamed section for property full declaration / definition
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
+		//       )
+		//       ( '@input:'
+		//           ( parameter+=ParameterInput  )*
+		//       | '@inout:'
+		//           ( parameter+=ParameterInout  )*
+		//       | '@output:'
+		//           ( parameter+=ParameterOutput )*
+		//       | '@return:'
+		//           ( parameter+=ParameterReturn )*
+		//       )*
+		//       ( '@property:'
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
+		//       | '@public:'
+		//           ( port+=PortPublic
+		//           | signal+=SignalPublic
+		//           | buffer+=BufferPublic
+		//           | channel+=ChannelPublic
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPublic
+		//           | variable+=VariablePublic
+		//           )*
+		//       | '@protected:'
+		//           ( port+=PortProtected
+		//           | signal+=SignalProtected
+		//           | buffer+=BufferProtected
+		//           | channel+=ChannelProtected
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionProtected
+		//           | variable+=VariableProtected
+		//           )*
+		//       | '@private:'
+		//           ( port+=PortPrivate
+		//           | signal+=SignalPrivate
+		//           | buffer+=BufferPrivate
+		//           | channel+=ChannelPrivate
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPrivate
+		//           | variable+=VariablePrivate
+		//           )*
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::PropertyPart}
 		public Action getPropertyPartAction_0() { return cPropertyPartAction_0; }
 		
-		//('@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))* |
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*)
+		//( '@parameter:'
+		//    ( 'input'
+		//        ( parameter+=ParameterInput
+		//        | '{' ( parameter+=ParameterInput )+ '}'
+		//        )
+		//    | 'inout'
+		//        ( parameter+=ParameterInout
+		//        | '{' ( parameter+=ParameterInout )+ '}'
+		//        )
+		//    | 'output'
+		//        ( parameter+=ParameterOutput
+		//        | '{' ( parameter+=ParameterOutput )+ '}'
+		//        )
+		//    | 'return'
+		//        ( parameter+=ParameterReturn
+		//        | '{' ( parameter+=ParameterReturn )+ '}'
+		//        )
+		//    )*
+		//| // optional unnamed section for property full declaration / definition
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//'@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		//'@parameter:'
+		//           ( 'input'
+		//               ( parameter+=ParameterInput
+		//               | '{' ( parameter+=ParameterInput )+ '}'
+		//               )
+		//           | 'inout'
+		//               ( parameter+=ParameterInout
+		//               | '{' ( parameter+=ParameterInout )+ '}'
+		//               )
+		//           | 'output'
+		//               ( parameter+=ParameterOutput
+		//               | '{' ( parameter+=ParameterOutput )+ '}'
+		//               )
+		//           | 'return'
+		//               ( parameter+=ParameterReturn
+		//               | '{' ( parameter+=ParameterReturn )+ '}'
+		//               )
+		//           )*
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'@parameter:'
 		public Keyword getParameterKeyword_1_0_0() { return cParameterKeyword_1_0_0; }
 		
-		//('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout | '{'
-		//parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}') |
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		//( 'input'
+		//    ( parameter+=ParameterInput
+		//    | '{' ( parameter+=ParameterInput )+ '}'
+		//    )
+		//| 'inout'
+		//    ( parameter+=ParameterInout
+		//    | '{' ( parameter+=ParameterInout )+ '}'
+		//    )
+		//| 'output'
+		//    ( parameter+=ParameterOutput
+		//    | '{' ( parameter+=ParameterOutput )+ '}'
+		//    )
+		//| 'return'
+		//    ( parameter+=ParameterReturn
+		//    | '{' ( parameter+=ParameterReturn )+ '}'
+		//    )
+		//)*
 		public Alternatives getAlternatives_1_0_1() { return cAlternatives_1_0_1; }
 		
-		//'input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//'input'
+		//               ( parameter+=ParameterInput
+		//               | '{' ( parameter+=ParameterInput )+ '}'
+		//               )
 		public Group getGroup_1_0_1_0() { return cGroup_1_0_1_0; }
 		
 		//'input'
 		public Keyword getInputKeyword_1_0_1_0_0() { return cInputKeyword_1_0_1_0_0; }
 		
-		//(parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//( parameter+=ParameterInput
+		//| '{' ( parameter+=ParameterInput )+ '}'
+		//)
 		public Alternatives getAlternatives_1_0_1_0_1() { return cAlternatives_1_0_1_0_1; }
 		
 		//parameter+=ParameterInput
@@ -3675,13 +4457,13 @@
 		//ParameterInput
 		public RuleCall getParameterParameterInputParserRuleCall_1_0_1_0_1_0_0() { return cParameterParameterInputParserRuleCall_1_0_1_0_1_0_0; }
 		
-		//'{' parameter+=ParameterInput+ '}'
+		//'{' ( parameter+=ParameterInput )+ '}'
 		public Group getGroup_1_0_1_0_1_1() { return cGroup_1_0_1_0_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_0_1_0_1_1_0() { return cLeftCurlyBracketKeyword_1_0_1_0_1_1_0; }
 		
-		//parameter+=ParameterInput+
+		//( parameter+=ParameterInput )+
 		public Assignment getParameterAssignment_1_0_1_0_1_1_1() { return cParameterAssignment_1_0_1_0_1_1_1; }
 		
 		//ParameterInput
@@ -3690,13 +4472,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_1_0_1_0_1_1_2() { return cRightCurlyBracketKeyword_1_0_1_0_1_1_2; }
 		
-		//'inout' (parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//'inout'
+		//               ( parameter+=ParameterInout
+		//               | '{' ( parameter+=ParameterInout )+ '}'
+		//               )
 		public Group getGroup_1_0_1_1() { return cGroup_1_0_1_1; }
 		
 		//'inout'
 		public Keyword getInoutKeyword_1_0_1_1_0() { return cInoutKeyword_1_0_1_1_0; }
 		
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//( parameter+=ParameterInout
+		//| '{' ( parameter+=ParameterInout )+ '}'
+		//)
 		public Alternatives getAlternatives_1_0_1_1_1() { return cAlternatives_1_0_1_1_1; }
 		
 		//parameter+=ParameterInout
@@ -3705,13 +4492,13 @@
 		//ParameterInout
 		public RuleCall getParameterParameterInoutParserRuleCall_1_0_1_1_1_0_0() { return cParameterParameterInoutParserRuleCall_1_0_1_1_1_0_0; }
 		
-		//'{' parameter+=ParameterInout+ '}'
+		//'{' ( parameter+=ParameterInout )+ '}'
 		public Group getGroup_1_0_1_1_1_1() { return cGroup_1_0_1_1_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_0_1_1_1_1_0() { return cLeftCurlyBracketKeyword_1_0_1_1_1_1_0; }
 		
-		//parameter+=ParameterInout+
+		//( parameter+=ParameterInout )+
 		public Assignment getParameterAssignment_1_0_1_1_1_1_1() { return cParameterAssignment_1_0_1_1_1_1_1; }
 		
 		//ParameterInout
@@ -3720,13 +4507,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_1_0_1_1_1_1_2() { return cRightCurlyBracketKeyword_1_0_1_1_1_1_2; }
 		
-		//'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//'output'
+		//               ( parameter+=ParameterOutput
+		//               | '{' ( parameter+=ParameterOutput )+ '}'
+		//               )
 		public Group getGroup_1_0_1_2() { return cGroup_1_0_1_2; }
 		
 		//'output'
 		public Keyword getOutputKeyword_1_0_1_2_0() { return cOutputKeyword_1_0_1_2_0; }
 		
-		//(parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//( parameter+=ParameterOutput
+		//| '{' ( parameter+=ParameterOutput )+ '}'
+		//)
 		public Alternatives getAlternatives_1_0_1_2_1() { return cAlternatives_1_0_1_2_1; }
 		
 		//parameter+=ParameterOutput
@@ -3735,13 +4527,13 @@
 		//ParameterOutput
 		public RuleCall getParameterParameterOutputParserRuleCall_1_0_1_2_1_0_0() { return cParameterParameterOutputParserRuleCall_1_0_1_2_1_0_0; }
 		
-		//'{' parameter+=ParameterOutput+ '}'
+		//'{' ( parameter+=ParameterOutput )+ '}'
 		public Group getGroup_1_0_1_2_1_1() { return cGroup_1_0_1_2_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_0_1_2_1_1_0() { return cLeftCurlyBracketKeyword_1_0_1_2_1_1_0; }
 		
-		//parameter+=ParameterOutput+
+		//( parameter+=ParameterOutput )+
 		public Assignment getParameterAssignment_1_0_1_2_1_1_1() { return cParameterAssignment_1_0_1_2_1_1_1; }
 		
 		//ParameterOutput
@@ -3750,13 +4542,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_1_0_1_2_1_1_2() { return cRightCurlyBracketKeyword_1_0_1_2_1_1_2; }
 		
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//'return'
+		//               ( parameter+=ParameterReturn
+		//               | '{' ( parameter+=ParameterReturn )+ '}'
+		//               )
 		public Group getGroup_1_0_1_3() { return cGroup_1_0_1_3; }
 		
 		//'return'
 		public Keyword getReturnKeyword_1_0_1_3_0() { return cReturnKeyword_1_0_1_3_0; }
 		
-		//(parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//( parameter+=ParameterReturn
+		//| '{' ( parameter+=ParameterReturn )+ '}'
+		//)
 		public Alternatives getAlternatives_1_0_1_3_1() { return cAlternatives_1_0_1_3_1; }
 		
 		//parameter+=ParameterReturn
@@ -3765,13 +4562,13 @@
 		//ParameterReturn
 		public RuleCall getParameterParameterReturnParserRuleCall_1_0_1_3_1_0_0() { return cParameterParameterReturnParserRuleCall_1_0_1_3_1_0_0; }
 		
-		//'{' parameter+=ParameterReturn+ '}'
+		//'{' ( parameter+=ParameterReturn )+ '}'
 		public Group getGroup_1_0_1_3_1_1() { return cGroup_1_0_1_3_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_0_1_3_1_1_0() { return cLeftCurlyBracketKeyword_1_0_1_3_1_1_0; }
 		
-		//parameter+=ParameterReturn+
+		//( parameter+=ParameterReturn )+
 		public Assignment getParameterAssignment_1_0_1_3_1_1_1() { return cParameterAssignment_1_0_1_3_1_1_1; }
 		
 		//ParameterReturn
@@ -3780,8 +4577,15 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_1_0_1_3_1_1_2() { return cRightCurlyBracketKeyword_1_0_1_3_1_1_2; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//// optional unnamed section for property full declaration / definition
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
 		//port+=Port
@@ -3826,76 +4630,130 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_1_1_6_0() { return cVariableVariableParserRuleCall_1_1_6_0; }
 		
-		//('@input:' parameter+=ParameterInput* | '@inout:' parameter+=ParameterInout* | '@output:' parameter+=ParameterOutput* |
-		//'@return:' parameter+=ParameterReturn*)*
+		//( '@input:'
+		//    ( parameter+=ParameterInput  )*
+		//| '@inout:'
+		//    ( parameter+=ParameterInout  )*
+		//| '@output:'
+		//    ( parameter+=ParameterOutput )*
+		//| '@return:'
+		//    ( parameter+=ParameterReturn )*
+		//)*
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//'@input:' parameter+=ParameterInput*
+		//'@input:'
+		//           ( parameter+=ParameterInput  )*
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//'@input:'
 		public Keyword getInputKeyword_2_0_0() { return cInputKeyword_2_0_0; }
 		
-		//parameter+=ParameterInput*
+		//( parameter+=ParameterInput  )*
 		public Assignment getParameterAssignment_2_0_1() { return cParameterAssignment_2_0_1; }
 		
 		//ParameterInput
 		public RuleCall getParameterParameterInputParserRuleCall_2_0_1_0() { return cParameterParameterInputParserRuleCall_2_0_1_0; }
 		
-		//'@inout:' parameter+=ParameterInout*
+		//'@inout:'
+		//           ( parameter+=ParameterInout  )*
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'@inout:'
 		public Keyword getInoutKeyword_2_1_0() { return cInoutKeyword_2_1_0; }
 		
-		//parameter+=ParameterInout*
+		//( parameter+=ParameterInout  )*
 		public Assignment getParameterAssignment_2_1_1() { return cParameterAssignment_2_1_1; }
 		
 		//ParameterInout
 		public RuleCall getParameterParameterInoutParserRuleCall_2_1_1_0() { return cParameterParameterInoutParserRuleCall_2_1_1_0; }
 		
-		//'@output:' parameter+=ParameterOutput*
+		//'@output:'
+		//           ( parameter+=ParameterOutput )*
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//'@output:'
 		public Keyword getOutputKeyword_2_2_0() { return cOutputKeyword_2_2_0; }
 		
-		//parameter+=ParameterOutput*
+		//( parameter+=ParameterOutput )*
 		public Assignment getParameterAssignment_2_2_1() { return cParameterAssignment_2_2_1; }
 		
 		//ParameterOutput
 		public RuleCall getParameterParameterOutputParserRuleCall_2_2_1_0() { return cParameterParameterOutputParserRuleCall_2_2_1_0; }
 		
-		//'@return:' parameter+=ParameterReturn*
+		//'@return:'
+		//           ( parameter+=ParameterReturn )*
 		public Group getGroup_2_3() { return cGroup_2_3; }
 		
 		//'@return:'
 		public Keyword getReturnKeyword_2_3_0() { return cReturnKeyword_2_3_0; }
 		
-		//parameter+=ParameterReturn*
+		//( parameter+=ParameterReturn )*
 		public Assignment getParameterAssignment_2_3_1() { return cParameterAssignment_2_3_1; }
 		
 		//ParameterReturn
 		public RuleCall getParameterParameterReturnParserRuleCall_2_3_1_0() { return cParameterParameterReturnParserRuleCall_2_3_1_0; }
 		
-		//('@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)* | '@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic
-		//| channel+=ChannelPublic | typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)* |
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)* | '@private:' (port+=PortPrivate
-		//| signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*)*
+		//( '@property:'
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//| '@public:'
+		//    ( port+=PortPublic
+		//    | signal+=SignalPublic
+		//    | buffer+=BufferPublic
+		//    | channel+=ChannelPublic
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPublic
+		//    | variable+=VariablePublic
+		//    )*
+		//| '@protected:'
+		//    ( port+=PortProtected
+		//    | signal+=SignalProtected
+		//    | buffer+=BufferProtected
+		//    | channel+=ChannelProtected
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionProtected
+		//    | variable+=VariableProtected
+		//    )*
+		//| '@private:'
+		//    ( port+=PortPrivate
+		//    | signal+=SignalPrivate
+		//    | buffer+=BufferPrivate
+		//    | channel+=ChannelPrivate
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPrivate
+		//    | variable+=VariablePrivate
+		//    )*
+		//)*
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//'@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)*
+		//'@property:'
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'@property:'
 		public Keyword getPropertyKeyword_3_0_0() { return cPropertyKeyword_3_0_0; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//( port+=Port
+		//| signal+=Signal
+		//| buffer+=Buffer
+		//| channel+=Channel
+		//| typedef+=TypeDefinition
+		//| function+=Function
+		//| variable+=Variable
+		//)*
 		public Alternatives getAlternatives_3_0_1() { return cAlternatives_3_0_1; }
 		
 		//port+=Port
@@ -3940,15 +4798,28 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_3_0_1_6_0() { return cVariableVariableParserRuleCall_3_0_1_6_0; }
 		
-		//'@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic |
-		//typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)*
+		//'@public:'
+		//           ( port+=PortPublic
+		//           | signal+=SignalPublic
+		//           | buffer+=BufferPublic
+		//           | channel+=ChannelPublic
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPublic
+		//           | variable+=VariablePublic
+		//           )*
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//'@public:'
 		public Keyword getPublicKeyword_3_1_0() { return cPublicKeyword_3_1_0; }
 		
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)*
+		//( port+=PortPublic
+		//| signal+=SignalPublic
+		//| buffer+=BufferPublic
+		//| channel+=ChannelPublic
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPublic
+		//| variable+=VariablePublic
+		//)*
 		public Alternatives getAlternatives_3_1_1() { return cAlternatives_3_1_1; }
 		
 		//port+=PortPublic
@@ -3993,15 +4864,28 @@
 		//VariablePublic
 		public RuleCall getVariableVariablePublicParserRuleCall_3_1_1_6_0() { return cVariableVariablePublicParserRuleCall_3_1_1_6_0; }
 		
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//'@protected:'
+		//           ( port+=PortProtected
+		//           | signal+=SignalProtected
+		//           | buffer+=BufferProtected
+		//           | channel+=ChannelProtected
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionProtected
+		//           | variable+=VariableProtected
+		//           )*
 		public Group getGroup_3_2() { return cGroup_3_2; }
 		
 		//'@protected:'
 		public Keyword getProtectedKeyword_3_2_0() { return cProtectedKeyword_3_2_0; }
 		
-		//(port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//( port+=PortProtected
+		//| signal+=SignalProtected
+		//| buffer+=BufferProtected
+		//| channel+=ChannelProtected
+		//| typedef+=TypeDefinition
+		//| function+=FunctionProtected
+		//| variable+=VariableProtected
+		//)*
 		public Alternatives getAlternatives_3_2_1() { return cAlternatives_3_2_1; }
 		
 		//port+=PortProtected
@@ -4046,15 +4930,28 @@
 		//VariableProtected
 		public RuleCall getVariableVariableProtectedParserRuleCall_3_2_1_6_0() { return cVariableVariableProtectedParserRuleCall_3_2_1_6_0; }
 		
-		//'@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate |
-		//typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*
+		//'@private:'
+		//           ( port+=PortPrivate
+		//           | signal+=SignalPrivate
+		//           | buffer+=BufferPrivate
+		//           | channel+=ChannelPrivate
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPrivate
+		//           | variable+=VariablePrivate
+		//           )*
 		public Group getGroup_3_3() { return cGroup_3_3; }
 		
 		//'@private:'
 		public Keyword getPrivateKeyword_3_3_0() { return cPrivateKeyword_3_3_0; }
 		
-		//(port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*
+		//( port+=PortPrivate
+		//| signal+=SignalPrivate
+		//| buffer+=BufferPrivate
+		//| channel+=ChannelPrivate
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPrivate
+		//| variable+=VariablePrivate
+		//)*
 		public Alternatives getAlternatives_3_3_1() { return cAlternatives_3_3_1; }
 		
 		//port+=PortPrivate
@@ -4143,36 +5040,59 @@
 		private final Assignment cInstanceAssignment_2_3_1 = (Assignment)cGroup_2_3.eContents().get(1);
 		private final RuleCall cInstanceInstanceMachineParserRuleCall_2_3_1_0 = (RuleCall)cInstanceAssignment_2_3_1.eContents().get(0);
 		
-		//CompositePart fmlInfra::CompositePart:
-		//	{fmlInfra::CompositePart} ((('@routine:' | '@macro:') routine+=Routine+
-		//	| '@procedure:' procedure+=Procedure+)*
-		//	| (routine+=Routine | procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock
-		//	| instance+=InstanceMachine)+
-		//	| '@model:' machine+=AnyMachineBlock*
-		//	| '@prototype:' machine+=AnyMachineBlock*
-		//	| '@instance:' instance+=InstanceMachine*)*;
+		//CompositePart returns fmlInfra::CompositePart
+		//    : {fmlInfra::CompositePart}
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine | procedure+=Procedure )+
+		//        )
+		//        ( ( '@composite:' | '@machine:' )
+		//            ( machine +=AnyMachineBlock
+		//            | instance+=InstanceMachine
+		//            )+
+		//        | '@model:'     ( machine +=AnyMachineBlock )*
+		//        | '@prototype:' ( machine +=AnyMachineBlock )*
+		//        | '@instance:'  ( instance+=InstanceMachine )*
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::CompositePart} ((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* |
-		//(routine+=Routine | procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock |
-		//instance+=InstanceMachine)+ | '@model:' machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* |
-		//'@instance:' instance+=InstanceMachine*)*
+		//{fmlInfra::CompositePart}
+		//       ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//         | '@procedure:' ( procedure+=Procedure )+
+		//         )*
+		//       | ( routine+=Routine | procedure+=Procedure )+
+		//       )
+		//       ( ( '@composite:' | '@machine:' )
+		//           ( machine +=AnyMachineBlock
+		//           | instance+=InstanceMachine
+		//           )+
+		//       | '@model:'     ( machine +=AnyMachineBlock )*
+		//       | '@prototype:' ( machine +=AnyMachineBlock )*
+		//       | '@instance:'  ( instance+=InstanceMachine )*
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::CompositePart}
 		public Action getCompositePartAction_0() { return cCompositePartAction_0; }
 		
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+)
+		//( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//  | '@procedure:' ( procedure+=Procedure )+
+		//  )*
+		//| ( routine+=Routine | procedure+=Procedure )+
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//(('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)*
+		//( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//         | '@procedure:' ( procedure+=Procedure )+
+		//         )*
 		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
 		
-		//('@routine:' | '@macro:') routine+=Routine+
+		//( '@routine:' | '@macro:' ) ( routine+=Routine )+
 		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
 		
-		//('@routine:' | '@macro:')
+		//( '@routine:' | '@macro:' )
 		public Alternatives getAlternatives_1_0_0_0() { return cAlternatives_1_0_0_0; }
 		
 		//'@routine:'
@@ -4181,25 +5101,25 @@
 		//'@macro:'
 		public Keyword getMacroKeyword_1_0_0_0_1() { return cMacroKeyword_1_0_0_0_1; }
 		
-		//routine+=Routine+
+		//( routine+=Routine )+
 		public Assignment getRoutineAssignment_1_0_0_1() { return cRoutineAssignment_1_0_0_1; }
 		
 		//Routine
 		public RuleCall getRoutineRoutineParserRuleCall_1_0_0_1_0() { return cRoutineRoutineParserRuleCall_1_0_0_1_0; }
 		
-		//'@procedure:' procedure+=Procedure+
+		//'@procedure:' ( procedure+=Procedure )+
 		public Group getGroup_1_0_1() { return cGroup_1_0_1; }
 		
 		//'@procedure:'
 		public Keyword getProcedureKeyword_1_0_1_0() { return cProcedureKeyword_1_0_1_0; }
 		
-		//procedure+=Procedure+
+		//( procedure+=Procedure )+
 		public Assignment getProcedureAssignment_1_0_1_1() { return cProcedureAssignment_1_0_1_1; }
 		
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_1_0_1_1_0() { return cProcedureProcedureParserRuleCall_1_0_1_1_0; }
 		
-		//(routine+=Routine | procedure+=Procedure)+
+		//( routine+=Routine | procedure+=Procedure )+
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
 		//routine+=Routine
@@ -4214,14 +5134,23 @@
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_1_1_1_0() { return cProcedureProcedureParserRuleCall_1_1_1_0; }
 		
-		//(('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+ | '@model:'
-		//machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* | '@instance:' instance+=InstanceMachine*)*
+		//( ( '@composite:' | '@machine:' )
+		//    ( machine +=AnyMachineBlock
+		//    | instance+=InstanceMachine
+		//    )+
+		//| '@model:'     ( machine +=AnyMachineBlock )*
+		//| '@prototype:' ( machine +=AnyMachineBlock )*
+		//| '@instance:'  ( instance+=InstanceMachine )*
+		//)*
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//('@composite:' | '@machine:') (machine+=AnyMachineBlock | instance+=InstanceMachine)+
+		//( '@composite:' | '@machine:' )
+		//           ( machine +=AnyMachineBlock
+		//           | instance+=InstanceMachine
+		//           )+
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
-		//('@composite:' | '@machine:')
+		//( '@composite:' | '@machine:' )
 		public Alternatives getAlternatives_2_0_0() { return cAlternatives_2_0_0; }
 		
 		//'@composite:'
@@ -4230,10 +5159,12 @@
 		//'@machine:'
 		public Keyword getMachineKeyword_2_0_0_1() { return cMachineKeyword_2_0_0_1; }
 		
-		//(machine+=AnyMachineBlock | instance+=InstanceMachine)+
+		//( machine +=AnyMachineBlock
+		//| instance+=InstanceMachine
+		//)+
 		public Alternatives getAlternatives_2_0_1() { return cAlternatives_2_0_1; }
 		
-		//machine+=AnyMachineBlock
+		//machine +=AnyMachineBlock
 		public Assignment getMachineAssignment_2_0_1_0() { return cMachineAssignment_2_0_1_0; }
 		
 		//AnyMachineBlock
@@ -4245,37 +5176,37 @@
 		//InstanceMachine
 		public RuleCall getInstanceInstanceMachineParserRuleCall_2_0_1_1_0() { return cInstanceInstanceMachineParserRuleCall_2_0_1_1_0; }
 		
-		//'@model:' machine+=AnyMachineBlock*
+		//'@model:'     ( machine +=AnyMachineBlock )*
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'@model:'
 		public Keyword getModelKeyword_2_1_0() { return cModelKeyword_2_1_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_2_1_1() { return cMachineAssignment_2_1_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_2_1_1_0() { return cMachineAnyMachineBlockParserRuleCall_2_1_1_0; }
 		
-		//'@prototype:' machine+=AnyMachineBlock*
+		//'@prototype:' ( machine +=AnyMachineBlock )*
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//'@prototype:'
 		public Keyword getPrototypeKeyword_2_2_0() { return cPrototypeKeyword_2_2_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_2_2_1() { return cMachineAssignment_2_2_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_2_2_1_0() { return cMachineAnyMachineBlockParserRuleCall_2_2_1_0; }
 		
-		//'@instance:' instance+=InstanceMachine*
+		//'@instance:'  ( instance+=InstanceMachine )*
 		public Group getGroup_2_3() { return cGroup_2_3; }
 		
 		//'@instance:'
 		public Keyword getInstanceKeyword_2_3_0() { return cInstanceKeyword_2_3_0; }
 		
-		//instance+=InstanceMachine*
+		//( instance+=InstanceMachine )*
 		public Assignment getInstanceAssignment_2_3_1() { return cInstanceAssignment_2_3_1; }
 		
 		//InstanceMachine
@@ -4297,40 +5228,49 @@
 		private final Assignment cMainAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cMainMoeBehaviorParserRuleCall_2_0 = (RuleCall)cMainAssignment_2.eContents().get(0);
 		
-		//BehaviorPart fmlInfra::BehaviorPart:
-		//	{fmlInfra::BehaviorPart} ('@behavior:' behavior+=Behavior+
-		//	| '@statemachine:' behavior+=Statemachine+)*
-		//	main=MoeBehavior;
+		//BehaviorPart returns fmlInfra::BehaviorPart
+		//    : {fmlInfra::BehaviorPart}
+		//        ( '@behavior:'     ( behavior+=Behavior )+
+		//        | '@statemachine:' ( behavior+=Statemachine )+
+		//        )*
+		//        main=MoeBehavior
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::BehaviorPart} ('@behavior:' behavior+=Behavior+ | '@statemachine:' behavior+=Statemachine+)* main=MoeBehavior
+		//{fmlInfra::BehaviorPart}
+		//       ( '@behavior:'     ( behavior+=Behavior )+
+		//       | '@statemachine:' ( behavior+=Statemachine )+
+		//       )*
+		//       main=MoeBehavior
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::BehaviorPart}
 		public Action getBehaviorPartAction_0() { return cBehaviorPartAction_0; }
 		
-		//('@behavior:' behavior+=Behavior+ | '@statemachine:' behavior+=Statemachine+)*
+		//( '@behavior:'     ( behavior+=Behavior )+
+		//| '@statemachine:' ( behavior+=Statemachine )+
+		//)*
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//'@behavior:' behavior+=Behavior+
+		//'@behavior:'     ( behavior+=Behavior )+
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'@behavior:'
 		public Keyword getBehaviorKeyword_1_0_0() { return cBehaviorKeyword_1_0_0; }
 		
-		//behavior+=Behavior+
+		//( behavior+=Behavior )+
 		public Assignment getBehaviorAssignment_1_0_1() { return cBehaviorAssignment_1_0_1; }
 		
 		//Behavior
 		public RuleCall getBehaviorBehaviorParserRuleCall_1_0_1_0() { return cBehaviorBehaviorParserRuleCall_1_0_1_0; }
 		
-		//'@statemachine:' behavior+=Statemachine+
+		//'@statemachine:' ( behavior+=Statemachine )+
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'@statemachine:'
 		public Keyword getStatemachineKeyword_1_1_0() { return cStatemachineKeyword_1_1_0; }
 		
-		//behavior+=Statemachine+
+		//( behavior+=Statemachine )+
 		public Assignment getBehaviorAssignment_1_1_1() { return cBehaviorAssignment_1_1_1; }
 		
 		//Statemachine
@@ -4554,87 +5494,223 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Procedure View Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Procedure fmlInfra::Procedure:
-		//	visibility=VisibilityKind?
-		//	'procedure' ('<' 'moc:'? ('and' | 'or') '>')?
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? (('(' (parameter+=FunctionalParameter (','
-		//	parameter+=FunctionalParameter)*)? ')')? ('-->' (parameter+=FormalParameter
-		//	| '(' parameter+=FormalParameter (',' parameter+=FormalParameter)* ')'))?)?
-		//	'{' ('@parameter:' ('input' (parameter+=ParameterInput
-		//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-		//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-		//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-		//	| '{' parameter+=ParameterReturn+ '}'))*
-		//	| (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*) ('@input:'
-		//	parameter+=ParameterInput*
-		//	| '@inout:'
-		//	parameter+=ParameterInout*
-		//	| '@output:'
-		//	parameter+=ParameterOutput*
-		//	| '@return:'
-		//	parameter+=ParameterReturn*)* ('@property:' (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*
-		//	| '@public:' (port+=PortPublic
-		//	| signal+=SignalPublic
-		//	| buffer+=BufferPublic
-		//	| channel+=ChannelPublic
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPublic
-		//	| variable+=VariablePublic)*
-		//	| '@protected:' (port+=PortProtected
-		//	| signal+=SignalProtected
-		//	| buffer+=BufferProtected
-		//	| channel+=ChannelProtected
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionProtected
-		//	| variable+=VariableProtected)*
-		//	| '@private:' (port+=PortPrivate
-		//	| signal+=SignalPrivate
-		//	| buffer+=BufferPrivate
-		//	| channel+=ChannelPrivate
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPrivate
-		//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-		//	| '@procedure:' procedure+=Procedure+)*
-		//	| (routine+=Routine | procedure+=Procedure)+) execution=ProcedureExecution?
-		//	//		& ( computation=ModelOfComputation )?
-		//	//		& ( interaction=ModelOfInteraction )?
-		//	'}';
+		//Procedure returns fmlInfra::Procedure
+		//    : ( visibility=VisibilityKind )?
+		//        'procedure' ( '<' ( 'moc:' )?  ( 'and' | 'or' ) '>' )?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( ( '(' ( parameter+=FunctionalParameter
+		//            ( ',' parameter+=FunctionalParameter )* )? ')' )?
+		//             ( '-->'
+		//                 ( parameter+=FormalParameter
+		//                 | '('  parameter+=FormalParameter
+		//                     ( ',' parameter+=FormalParameter )* ')'
+		//                 )
+		//             )?
+		//         )?
+		//        '{'
+		//        ( '@parameter:'
+		//            ( 'input'
+		//                ( parameter+=ParameterInput
+		//                | '{' ( parameter+=ParameterInput )+ '}'
+		//                )
+		//            | 'inout'
+		//                ( parameter+=ParameterInout
+		//                | '{' ( parameter+=ParameterInout )+ '}'
+		//                )
+		//            | 'output'
+		//                ( parameter+=ParameterOutput
+		//                | '{' ( parameter+=ParameterOutput )+ '}'
+		//                )
+		//            | 'return'
+		//                ( parameter+=ParameterReturn
+		//                | '{' ( parameter+=ParameterReturn )+ '}'
+		//                )
+		//            )*
+		//        | // optional unnamed section for property full declaration / definition
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@input:'
+		//            ( parameter+=ParameterInput  )*
+		//        | '@inout:'
+		//            ( parameter+=ParameterInout  )*
+		//        | '@output:'
+		//            ( parameter+=ParameterOutput )*
+		//        | '@return:'
+		//            ( parameter+=ParameterReturn )*
+		//        )*
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine | procedure+=Procedure )+
+		//        )
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
+		////
+		////        compositePart=CompositePart
+		////        ( region+=StatemachineRegion
+		////        | ( region+=StatemachineNamedRegion )+
+		////        | region+=StatemachineRegionLite
+		////        )?
+		//        ( ( execution=ProcedureExecution )?
+		////        & ( computation=ModelOfComputation )?
+		////        & ( interaction=ModelOfInteraction )?
+		//        )
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//visibility=VisibilityKind? 'procedure' ('<' 'moc:'? ('and' | 'or') '>')? name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? (('(' (parameter+=FunctionalParameter (',' parameter+=FunctionalParameter)*)? ')')?
-		//('-->' (parameter+=FormalParameter | '(' parameter+=FormalParameter (',' parameter+=FormalParameter)* ')'))?)? '{'
-		//('@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))* |
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*) ('@input:' parameter+=ParameterInput* | '@inout:' parameter+=ParameterInout* | '@output:'
-		//parameter+=ParameterOutput* | '@return:' parameter+=ParameterReturn*)* ('@property:' (port+=Port | signal+=Signal |
-		//buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function | variable+=Variable)* | '@public:'
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)* | '@protected:' (port+=PortProtected | signal+=SignalProtected |
-		//buffer+=BufferProtected | channel+=ChannelProtected | typedef+=TypeDefinition | function+=FunctionProtected |
-		//variable+=VariableProtected)* | '@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate |
-		//channel+=ChannelPrivate | typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*)*
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+) execution=ProcedureExecution? //		& ( computation=ModelOfComputation )?
-		////		& ( interaction=ModelOfInteraction )?
-		//'}'
+		// ( visibility=VisibilityKind )?
+		//        'procedure' ( '<' ( 'moc:' )?  ( 'and' | 'or' ) '>' )?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( ( '(' ( parameter+=FunctionalParameter
+		//            ( ',' parameter+=FunctionalParameter )* )? ')' )?
+		//             ( '-->'
+		//                 ( parameter+=FormalParameter
+		//                 | '('  parameter+=FormalParameter
+		//                     ( ',' parameter+=FormalParameter )* ')'
+		//                 )
+		//             )?
+		//         )?
+		//        '{'
+		//        ( '@parameter:'
+		//            ( 'input'
+		//                ( parameter+=ParameterInput
+		//                | '{' ( parameter+=ParameterInput )+ '}'
+		//                )
+		//            | 'inout'
+		//                ( parameter+=ParameterInout
+		//                | '{' ( parameter+=ParameterInout )+ '}'
+		//                )
+		//            | 'output'
+		//                ( parameter+=ParameterOutput
+		//                | '{' ( parameter+=ParameterOutput )+ '}'
+		//                )
+		//            | 'return'
+		//                ( parameter+=ParameterReturn
+		//                | '{' ( parameter+=ParameterReturn )+ '}'
+		//                )
+		//            )*
+		//        | // optional unnamed section for property full declaration / definition
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@input:'
+		//            ( parameter+=ParameterInput  )*
+		//        | '@inout:'
+		//            ( parameter+=ParameterInout  )*
+		//        | '@output:'
+		//            ( parameter+=ParameterOutput )*
+		//        | '@return:'
+		//            ( parameter+=ParameterReturn )*
+		//        )*
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine | procedure+=Procedure )+
+		//        )
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
+		////
+		////        compositePart=CompositePart
+		////        ( region+=StatemachineRegion
+		////        | ( region+=StatemachineNamedRegion )+
+		////        | region+=StatemachineRegionLite
+		////        )?
+		//        ( ( execution=ProcedureExecution )?
+		////        & ( computation=ModelOfComputation )?
+		////        & ( interaction=ModelOfInteraction )?
+		//        )
+		//        '}'
 		public Group getGroup() { return cGroup; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_0() { return cVisibilityAssignment_0; }
 		
 		//VisibilityKind
@@ -4643,16 +5719,16 @@
 		//'procedure'
 		public Keyword getProcedureKeyword_1() { return cProcedureKeyword_1; }
 		
-		//('<' 'moc:'? ('and' | 'or') '>')?
+		//( '<' ( 'moc:' )?  ( 'and' | 'or' ) '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_2_1() { return cMocKeyword_2_1; }
 		
-		//('and' | 'or')
+		//( 'and' | 'or' )
 		public Alternatives getAlternatives_2_2() { return cAlternatives_2_2; }
 		
 		//'and'
@@ -4670,23 +5746,32 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//(('(' (parameter+=FunctionalParameter (',' parameter+=FunctionalParameter)*)? ')')? ('-->' (parameter+=FormalParameter |
-		//'(' parameter+=FormalParameter (',' parameter+=FormalParameter)* ')'))?)?
+		//( ( '(' ( parameter+=FunctionalParameter
+		//    ( ',' parameter+=FunctionalParameter )* )? ')' )?
+		//     ( '-->'
+		//         ( parameter+=FormalParameter
+		//         | '('  parameter+=FormalParameter
+		//             ( ',' parameter+=FormalParameter )* ')'
+		//         )
+		//     )?
+		// )?
 		public Group getGroup_5() { return cGroup_5; }
 		
-		//('(' (parameter+=FunctionalParameter (',' parameter+=FunctionalParameter)*)? ')')?
+		//( '(' ( parameter+=FunctionalParameter
+		//           ( ',' parameter+=FunctionalParameter )* )? ')' )?
 		public Group getGroup_5_0() { return cGroup_5_0; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_5_0_0() { return cLeftParenthesisKeyword_5_0_0; }
 		
-		//(parameter+=FunctionalParameter (',' parameter+=FunctionalParameter)*)?
+		//( parameter+=FunctionalParameter
+		//           ( ',' parameter+=FunctionalParameter )* )?
 		public Group getGroup_5_0_1() { return cGroup_5_0_1; }
 		
 		//parameter+=FunctionalParameter
@@ -4695,7 +5780,7 @@
 		//FunctionalParameter
 		public RuleCall getParameterFunctionalParameterParserRuleCall_5_0_1_0_0() { return cParameterFunctionalParameterParserRuleCall_5_0_1_0_0; }
 		
-		//(',' parameter+=FunctionalParameter)*
+		//( ',' parameter+=FunctionalParameter )*
 		public Group getGroup_5_0_1_1() { return cGroup_5_0_1_1; }
 		
 		//','
@@ -4710,13 +5795,21 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_5_0_2() { return cRightParenthesisKeyword_5_0_2; }
 		
-		//('-->' (parameter+=FormalParameter | '(' parameter+=FormalParameter (',' parameter+=FormalParameter)* ')'))?
+		//( '-->'
+		//    ( parameter+=FormalParameter
+		//    | '('  parameter+=FormalParameter
+		//        ( ',' parameter+=FormalParameter )* ')'
+		//    )
+		//)?
 		public Group getGroup_5_1() { return cGroup_5_1; }
 		
 		//'-->'
 		public Keyword getHyphenMinusHyphenMinusGreaterThanSignKeyword_5_1_0() { return cHyphenMinusHyphenMinusGreaterThanSignKeyword_5_1_0; }
 		
-		//(parameter+=FormalParameter | '(' parameter+=FormalParameter (',' parameter+=FormalParameter)* ')')
+		//( parameter+=FormalParameter
+		//| '('  parameter+=FormalParameter
+		//    ( ',' parameter+=FormalParameter )* ')'
+		//)
 		public Alternatives getAlternatives_5_1_1() { return cAlternatives_5_1_1; }
 		
 		//parameter+=FormalParameter
@@ -4725,7 +5818,8 @@
 		//FormalParameter
 		public RuleCall getParameterFormalParameterParserRuleCall_5_1_1_0_0() { return cParameterFormalParameterParserRuleCall_5_1_1_0_0; }
 		
-		//'(' parameter+=FormalParameter (',' parameter+=FormalParameter)* ')'
+		//'('  parameter+=FormalParameter
+		//                    ( ',' parameter+=FormalParameter )* ')'
 		public Group getGroup_5_1_1_1() { return cGroup_5_1_1_1; }
 		
 		//'('
@@ -4737,7 +5831,7 @@
 		//FormalParameter
 		public RuleCall getParameterFormalParameterParserRuleCall_5_1_1_1_1_0() { return cParameterFormalParameterParserRuleCall_5_1_1_1_1_0; }
 		
-		//(',' parameter+=FormalParameter)*
+		//( ',' parameter+=FormalParameter )*
 		public Group getGroup_5_1_1_1_2() { return cGroup_5_1_1_1_2; }
 		
 		//','
@@ -4755,33 +5849,90 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
 		
-		//('@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))* |
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*)
+		//( '@parameter:'
+		//    ( 'input'
+		//        ( parameter+=ParameterInput
+		//        | '{' ( parameter+=ParameterInput )+ '}'
+		//        )
+		//    | 'inout'
+		//        ( parameter+=ParameterInout
+		//        | '{' ( parameter+=ParameterInout )+ '}'
+		//        )
+		//    | 'output'
+		//        ( parameter+=ParameterOutput
+		//        | '{' ( parameter+=ParameterOutput )+ '}'
+		//        )
+		//    | 'return'
+		//        ( parameter+=ParameterReturn
+		//        | '{' ( parameter+=ParameterReturn )+ '}'
+		//        )
+		//    )*
+		//| // optional unnamed section for property full declaration / definition
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//)
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
-		//'@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		//'@parameter:'
+		//           ( 'input'
+		//               ( parameter+=ParameterInput
+		//               | '{' ( parameter+=ParameterInput )+ '}'
+		//               )
+		//           | 'inout'
+		//               ( parameter+=ParameterInout
+		//               | '{' ( parameter+=ParameterInout )+ '}'
+		//               )
+		//           | 'output'
+		//               ( parameter+=ParameterOutput
+		//               | '{' ( parameter+=ParameterOutput )+ '}'
+		//               )
+		//           | 'return'
+		//               ( parameter+=ParameterReturn
+		//               | '{' ( parameter+=ParameterReturn )+ '}'
+		//               )
+		//           )*
 		public Group getGroup_7_0() { return cGroup_7_0; }
 		
 		//'@parameter:'
 		public Keyword getParameterKeyword_7_0_0() { return cParameterKeyword_7_0_0; }
 		
-		//('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout | '{'
-		//parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}') |
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		//( 'input'
+		//    ( parameter+=ParameterInput
+		//    | '{' ( parameter+=ParameterInput )+ '}'
+		//    )
+		//| 'inout'
+		//    ( parameter+=ParameterInout
+		//    | '{' ( parameter+=ParameterInout )+ '}'
+		//    )
+		//| 'output'
+		//    ( parameter+=ParameterOutput
+		//    | '{' ( parameter+=ParameterOutput )+ '}'
+		//    )
+		//| 'return'
+		//    ( parameter+=ParameterReturn
+		//    | '{' ( parameter+=ParameterReturn )+ '}'
+		//    )
+		//)*
 		public Alternatives getAlternatives_7_0_1() { return cAlternatives_7_0_1; }
 		
-		//'input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//'input'
+		//               ( parameter+=ParameterInput
+		//               | '{' ( parameter+=ParameterInput )+ '}'
+		//               )
 		public Group getGroup_7_0_1_0() { return cGroup_7_0_1_0; }
 		
 		//'input'
 		public Keyword getInputKeyword_7_0_1_0_0() { return cInputKeyword_7_0_1_0_0; }
 		
-		//(parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//( parameter+=ParameterInput
+		//| '{' ( parameter+=ParameterInput )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_0_1() { return cAlternatives_7_0_1_0_1; }
 		
 		//parameter+=ParameterInput
@@ -4790,13 +5941,13 @@
 		//ParameterInput
 		public RuleCall getParameterParameterInputParserRuleCall_7_0_1_0_1_0_0() { return cParameterParameterInputParserRuleCall_7_0_1_0_1_0_0; }
 		
-		//'{' parameter+=ParameterInput+ '}'
+		//'{' ( parameter+=ParameterInput )+ '}'
 		public Group getGroup_7_0_1_0_1_1() { return cGroup_7_0_1_0_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_0_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_0_1_1_0; }
 		
-		//parameter+=ParameterInput+
+		//( parameter+=ParameterInput )+
 		public Assignment getParameterAssignment_7_0_1_0_1_1_1() { return cParameterAssignment_7_0_1_0_1_1_1; }
 		
 		//ParameterInput
@@ -4805,13 +5956,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_0_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_0_1_1_2; }
 		
-		//'inout' (parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//'inout'
+		//               ( parameter+=ParameterInout
+		//               | '{' ( parameter+=ParameterInout )+ '}'
+		//               )
 		public Group getGroup_7_0_1_1() { return cGroup_7_0_1_1; }
 		
 		//'inout'
 		public Keyword getInoutKeyword_7_0_1_1_0() { return cInoutKeyword_7_0_1_1_0; }
 		
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//( parameter+=ParameterInout
+		//| '{' ( parameter+=ParameterInout )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_1_1() { return cAlternatives_7_0_1_1_1; }
 		
 		//parameter+=ParameterInout
@@ -4820,13 +5976,13 @@
 		//ParameterInout
 		public RuleCall getParameterParameterInoutParserRuleCall_7_0_1_1_1_0_0() { return cParameterParameterInoutParserRuleCall_7_0_1_1_1_0_0; }
 		
-		//'{' parameter+=ParameterInout+ '}'
+		//'{' ( parameter+=ParameterInout )+ '}'
 		public Group getGroup_7_0_1_1_1_1() { return cGroup_7_0_1_1_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_1_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_1_1_1_0; }
 		
-		//parameter+=ParameterInout+
+		//( parameter+=ParameterInout )+
 		public Assignment getParameterAssignment_7_0_1_1_1_1_1() { return cParameterAssignment_7_0_1_1_1_1_1; }
 		
 		//ParameterInout
@@ -4835,13 +5991,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_1_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_1_1_1_2; }
 		
-		//'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//'output'
+		//               ( parameter+=ParameterOutput
+		//               | '{' ( parameter+=ParameterOutput )+ '}'
+		//               )
 		public Group getGroup_7_0_1_2() { return cGroup_7_0_1_2; }
 		
 		//'output'
 		public Keyword getOutputKeyword_7_0_1_2_0() { return cOutputKeyword_7_0_1_2_0; }
 		
-		//(parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//( parameter+=ParameterOutput
+		//| '{' ( parameter+=ParameterOutput )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_2_1() { return cAlternatives_7_0_1_2_1; }
 		
 		//parameter+=ParameterOutput
@@ -4850,13 +6011,13 @@
 		//ParameterOutput
 		public RuleCall getParameterParameterOutputParserRuleCall_7_0_1_2_1_0_0() { return cParameterParameterOutputParserRuleCall_7_0_1_2_1_0_0; }
 		
-		//'{' parameter+=ParameterOutput+ '}'
+		//'{' ( parameter+=ParameterOutput )+ '}'
 		public Group getGroup_7_0_1_2_1_1() { return cGroup_7_0_1_2_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_2_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_2_1_1_0; }
 		
-		//parameter+=ParameterOutput+
+		//( parameter+=ParameterOutput )+
 		public Assignment getParameterAssignment_7_0_1_2_1_1_1() { return cParameterAssignment_7_0_1_2_1_1_1; }
 		
 		//ParameterOutput
@@ -4865,13 +6026,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_2_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_2_1_1_2; }
 		
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//'return'
+		//               ( parameter+=ParameterReturn
+		//               | '{' ( parameter+=ParameterReturn )+ '}'
+		//               )
 		public Group getGroup_7_0_1_3() { return cGroup_7_0_1_3; }
 		
 		//'return'
 		public Keyword getReturnKeyword_7_0_1_3_0() { return cReturnKeyword_7_0_1_3_0; }
 		
-		//(parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//( parameter+=ParameterReturn
+		//| '{' ( parameter+=ParameterReturn )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_3_1() { return cAlternatives_7_0_1_3_1; }
 		
 		//parameter+=ParameterReturn
@@ -4880,13 +6046,13 @@
 		//ParameterReturn
 		public RuleCall getParameterParameterReturnParserRuleCall_7_0_1_3_1_0_0() { return cParameterParameterReturnParserRuleCall_7_0_1_3_1_0_0; }
 		
-		//'{' parameter+=ParameterReturn+ '}'
+		//'{' ( parameter+=ParameterReturn )+ '}'
 		public Group getGroup_7_0_1_3_1_1() { return cGroup_7_0_1_3_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_3_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_3_1_1_0; }
 		
-		//parameter+=ParameterReturn+
+		//( parameter+=ParameterReturn )+
 		public Assignment getParameterAssignment_7_0_1_3_1_1_1() { return cParameterAssignment_7_0_1_3_1_1_1; }
 		
 		//ParameterReturn
@@ -4895,8 +6061,15 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_3_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_3_1_1_2; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//// optional unnamed section for property full declaration / definition
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
 		
 		//port+=Port
@@ -4941,76 +6114,130 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_7_1_6_0() { return cVariableVariableParserRuleCall_7_1_6_0; }
 		
-		//('@input:' parameter+=ParameterInput* | '@inout:' parameter+=ParameterInout* | '@output:' parameter+=ParameterOutput* |
-		//'@return:' parameter+=ParameterReturn*)*
+		//( '@input:'
+		//    ( parameter+=ParameterInput  )*
+		//| '@inout:'
+		//    ( parameter+=ParameterInout  )*
+		//| '@output:'
+		//    ( parameter+=ParameterOutput )*
+		//| '@return:'
+		//    ( parameter+=ParameterReturn )*
+		//)*
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
-		//'@input:' parameter+=ParameterInput*
+		//'@input:'
+		//           ( parameter+=ParameterInput  )*
 		public Group getGroup_8_0() { return cGroup_8_0; }
 		
 		//'@input:'
 		public Keyword getInputKeyword_8_0_0() { return cInputKeyword_8_0_0; }
 		
-		//parameter+=ParameterInput*
+		//( parameter+=ParameterInput  )*
 		public Assignment getParameterAssignment_8_0_1() { return cParameterAssignment_8_0_1; }
 		
 		//ParameterInput
 		public RuleCall getParameterParameterInputParserRuleCall_8_0_1_0() { return cParameterParameterInputParserRuleCall_8_0_1_0; }
 		
-		//'@inout:' parameter+=ParameterInout*
+		//'@inout:'
+		//           ( parameter+=ParameterInout  )*
 		public Group getGroup_8_1() { return cGroup_8_1; }
 		
 		//'@inout:'
 		public Keyword getInoutKeyword_8_1_0() { return cInoutKeyword_8_1_0; }
 		
-		//parameter+=ParameterInout*
+		//( parameter+=ParameterInout  )*
 		public Assignment getParameterAssignment_8_1_1() { return cParameterAssignment_8_1_1; }
 		
 		//ParameterInout
 		public RuleCall getParameterParameterInoutParserRuleCall_8_1_1_0() { return cParameterParameterInoutParserRuleCall_8_1_1_0; }
 		
-		//'@output:' parameter+=ParameterOutput*
+		//'@output:'
+		//           ( parameter+=ParameterOutput )*
 		public Group getGroup_8_2() { return cGroup_8_2; }
 		
 		//'@output:'
 		public Keyword getOutputKeyword_8_2_0() { return cOutputKeyword_8_2_0; }
 		
-		//parameter+=ParameterOutput*
+		//( parameter+=ParameterOutput )*
 		public Assignment getParameterAssignment_8_2_1() { return cParameterAssignment_8_2_1; }
 		
 		//ParameterOutput
 		public RuleCall getParameterParameterOutputParserRuleCall_8_2_1_0() { return cParameterParameterOutputParserRuleCall_8_2_1_0; }
 		
-		//'@return:' parameter+=ParameterReturn*
+		//'@return:'
+		//           ( parameter+=ParameterReturn )*
 		public Group getGroup_8_3() { return cGroup_8_3; }
 		
 		//'@return:'
 		public Keyword getReturnKeyword_8_3_0() { return cReturnKeyword_8_3_0; }
 		
-		//parameter+=ParameterReturn*
+		//( parameter+=ParameterReturn )*
 		public Assignment getParameterAssignment_8_3_1() { return cParameterAssignment_8_3_1; }
 		
 		//ParameterReturn
 		public RuleCall getParameterParameterReturnParserRuleCall_8_3_1_0() { return cParameterParameterReturnParserRuleCall_8_3_1_0; }
 		
-		//('@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)* | '@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic
-		//| channel+=ChannelPublic | typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)* |
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)* | '@private:' (port+=PortPrivate
-		//| signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*)*
+		//( '@property:'
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//| '@public:'
+		//    ( port+=PortPublic
+		//    | signal+=SignalPublic
+		//    | buffer+=BufferPublic
+		//    | channel+=ChannelPublic
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPublic
+		//    | variable+=VariablePublic
+		//    )*
+		//| '@protected:'
+		//    ( port+=PortProtected
+		//    | signal+=SignalProtected
+		//    | buffer+=BufferProtected
+		//    | channel+=ChannelProtected
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionProtected
+		//    | variable+=VariableProtected
+		//    )*
+		//| '@private:'
+		//    ( port+=PortPrivate
+		//    | signal+=SignalPrivate
+		//    | buffer+=BufferPrivate
+		//    | channel+=ChannelPrivate
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPrivate
+		//    | variable+=VariablePrivate
+		//    )*
+		//)*
 		public Alternatives getAlternatives_9() { return cAlternatives_9; }
 		
-		//'@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)*
+		//'@property:'
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Group getGroup_9_0() { return cGroup_9_0; }
 		
 		//'@property:'
 		public Keyword getPropertyKeyword_9_0_0() { return cPropertyKeyword_9_0_0; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//( port+=Port
+		//| signal+=Signal
+		//| buffer+=Buffer
+		//| channel+=Channel
+		//| typedef+=TypeDefinition
+		//| function+=Function
+		//| variable+=Variable
+		//)*
 		public Alternatives getAlternatives_9_0_1() { return cAlternatives_9_0_1; }
 		
 		//port+=Port
@@ -5055,15 +6282,28 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_9_0_1_6_0() { return cVariableVariableParserRuleCall_9_0_1_6_0; }
 		
-		//'@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic |
-		//typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)*
+		//'@public:'
+		//           ( port+=PortPublic
+		//           | signal+=SignalPublic
+		//           | buffer+=BufferPublic
+		//           | channel+=ChannelPublic
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPublic
+		//           | variable+=VariablePublic
+		//           )*
 		public Group getGroup_9_1() { return cGroup_9_1; }
 		
 		//'@public:'
 		public Keyword getPublicKeyword_9_1_0() { return cPublicKeyword_9_1_0; }
 		
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)*
+		//( port+=PortPublic
+		//| signal+=SignalPublic
+		//| buffer+=BufferPublic
+		//| channel+=ChannelPublic
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPublic
+		//| variable+=VariablePublic
+		//)*
 		public Alternatives getAlternatives_9_1_1() { return cAlternatives_9_1_1; }
 		
 		//port+=PortPublic
@@ -5108,15 +6348,28 @@
 		//VariablePublic
 		public RuleCall getVariableVariablePublicParserRuleCall_9_1_1_6_0() { return cVariableVariablePublicParserRuleCall_9_1_1_6_0; }
 		
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//'@protected:'
+		//           ( port+=PortProtected
+		//           | signal+=SignalProtected
+		//           | buffer+=BufferProtected
+		//           | channel+=ChannelProtected
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionProtected
+		//           | variable+=VariableProtected
+		//           )*
 		public Group getGroup_9_2() { return cGroup_9_2; }
 		
 		//'@protected:'
 		public Keyword getProtectedKeyword_9_2_0() { return cProtectedKeyword_9_2_0; }
 		
-		//(port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//( port+=PortProtected
+		//| signal+=SignalProtected
+		//| buffer+=BufferProtected
+		//| channel+=ChannelProtected
+		//| typedef+=TypeDefinition
+		//| function+=FunctionProtected
+		//| variable+=VariableProtected
+		//)*
 		public Alternatives getAlternatives_9_2_1() { return cAlternatives_9_2_1; }
 		
 		//port+=PortProtected
@@ -5161,15 +6414,28 @@
 		//VariableProtected
 		public RuleCall getVariableVariableProtectedParserRuleCall_9_2_1_6_0() { return cVariableVariableProtectedParserRuleCall_9_2_1_6_0; }
 		
-		//'@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate |
-		//typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*
+		//'@private:'
+		//           ( port+=PortPrivate
+		//           | signal+=SignalPrivate
+		//           | buffer+=BufferPrivate
+		//           | channel+=ChannelPrivate
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPrivate
+		//           | variable+=VariablePrivate
+		//           )*
 		public Group getGroup_9_3() { return cGroup_9_3; }
 		
 		//'@private:'
 		public Keyword getPrivateKeyword_9_3_0() { return cPrivateKeyword_9_3_0; }
 		
-		//(port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*
+		//( port+=PortPrivate
+		//| signal+=SignalPrivate
+		//| buffer+=BufferPrivate
+		//| channel+=ChannelPrivate
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPrivate
+		//| variable+=VariablePrivate
+		//)*
 		public Alternatives getAlternatives_9_3_1() { return cAlternatives_9_3_1; }
 		
 		//port+=PortPrivate
@@ -5214,17 +6480,22 @@
 		//VariablePrivate
 		public RuleCall getVariableVariablePrivateParserRuleCall_9_3_1_6_0() { return cVariableVariablePrivateParserRuleCall_9_3_1_6_0; }
 		
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+)
+		//( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//  | '@procedure:' ( procedure+=Procedure )+
+		//  )*
+		//| ( routine+=Routine | procedure+=Procedure )+
+		//)
 		public Alternatives getAlternatives_10() { return cAlternatives_10; }
 		
-		//(('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)*
+		//( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//         | '@procedure:' ( procedure+=Procedure )+
+		//         )*
 		public Alternatives getAlternatives_10_0() { return cAlternatives_10_0; }
 		
-		//('@routine:' | '@macro:') routine+=Routine+
+		//( '@routine:' | '@macro:' ) ( routine+=Routine )+
 		public Group getGroup_10_0_0() { return cGroup_10_0_0; }
 		
-		//('@routine:' | '@macro:')
+		//( '@routine:' | '@macro:' )
 		public Alternatives getAlternatives_10_0_0_0() { return cAlternatives_10_0_0_0; }
 		
 		//'@routine:'
@@ -5233,25 +6504,25 @@
 		//'@macro:'
 		public Keyword getMacroKeyword_10_0_0_0_1() { return cMacroKeyword_10_0_0_0_1; }
 		
-		//routine+=Routine+
+		//( routine+=Routine )+
 		public Assignment getRoutineAssignment_10_0_0_1() { return cRoutineAssignment_10_0_0_1; }
 		
 		//Routine
 		public RuleCall getRoutineRoutineParserRuleCall_10_0_0_1_0() { return cRoutineRoutineParserRuleCall_10_0_0_1_0; }
 		
-		//'@procedure:' procedure+=Procedure+
+		//'@procedure:' ( procedure+=Procedure )+
 		public Group getGroup_10_0_1() { return cGroup_10_0_1; }
 		
 		//'@procedure:'
 		public Keyword getProcedureKeyword_10_0_1_0() { return cProcedureKeyword_10_0_1_0; }
 		
-		//procedure+=Procedure+
+		//( procedure+=Procedure )+
 		public Assignment getProcedureAssignment_10_0_1_1() { return cProcedureAssignment_10_0_1_1; }
 		
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_10_0_1_1_0() { return cProcedureProcedureParserRuleCall_10_0_1_1_0; }
 		
-		//(routine+=Routine | procedure+=Procedure)+
+		//( routine+=Routine | procedure+=Procedure )+
 		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
 		
 		//routine+=Routine
@@ -5266,15 +6537,18 @@
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_10_1_1_0() { return cProcedureProcedureParserRuleCall_10_1_1_0; }
 		
-		////		// optional unnamed section for property full declaration / definition
-		////		propertyPart=PropertyPart
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
 		////
-		////		compositePart=CompositePart
-		////		( region+=StatemachineRegion
-		////		| ( region+=StatemachineNamedRegion )+
-		////		| region+=StatemachineRegionLite
-		////		)?
-		//execution=ProcedureExecution?
+		////        compositePart=CompositePart
+		////        ( region+=StatemachineRegion
+		////        | ( region+=StatemachineNamedRegion )+
+		////        | region+=StatemachineRegionLite
+		////        )?
+		//        ( ( execution=ProcedureExecution )?
+		////        & ( computation=ModelOfComputation )?
+		////        & ( interaction=ModelOfInteraction )?
+		//        )
 		public Assignment getExecutionAssignment_11() { return cExecutionAssignment_11; }
 		
 		//ProcedureExecution
@@ -5300,28 +6574,37 @@
 		private final Assignment cRunRoutineAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
 		private final RuleCall cRunRoutineMoeRoutineParserRuleCall_2_1_1_0 = (RuleCall)cRunRoutineAssignment_2_1_1.eContents().get(0);
 		
-		//ProcedureExecution fmlInfra::ModelOfExecution:
-		//	{fmlInfra::ModelOfExecution} '@moe:'? ((('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
-		//	& ('@run' runRoutine=moeRoutine)?);
+		//ProcedureExecution returns fmlInfra::ModelOfExecution
+		//    : { fmlInfra::ModelOfExecution }
+		//        ( '@moe:' )?
+		//        ( ( ( '@schedule' | '@xschedule' )  scheduleRoutine=moeRoutine )?
+		//        & ( '@run'  runRoutine=moeRoutine )?
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfExecution} '@moe:'? ((('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)? & ('@run'
-		//runRoutine=moeRoutine)?)
+		//{ fmlInfra::ModelOfExecution }
+		//       ( '@moe:' )?
+		//       ( ( ( '@schedule' | '@xschedule' )  scheduleRoutine=moeRoutine )?
+		//       & ( '@run'  runRoutine=moeRoutine )?
+		//       )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfExecution}
+		//{ fmlInfra::ModelOfExecution }
 		public Action getModelOfExecutionAction_0() { return cModelOfExecutionAction_0; }
 		
-		//'@moe:'?
+		//( '@moe:' )?
 		public Keyword getMoeKeyword_1() { return cMoeKeyword_1; }
 		
-		//((('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)? & ('@run' runRoutine=moeRoutine)?)
+		//( ( ( '@schedule' | '@xschedule' )  scheduleRoutine=moeRoutine )?
+		//& ( '@run'  runRoutine=moeRoutine )?
+		//)
 		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
 		
-		//(('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
+		//( ( '@schedule' | '@xschedule' )  scheduleRoutine=moeRoutine )?
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
-		//('@schedule' | '@xschedule')
+		//( '@schedule' | '@xschedule' )
 		public Alternatives getAlternatives_2_0_0() { return cAlternatives_2_0_0; }
 		
 		//'@schedule'
@@ -5336,7 +6619,7 @@
 		//moeRoutine
 		public RuleCall getScheduleRoutineMoeRoutineParserRuleCall_2_0_1_0() { return cScheduleRoutineMoeRoutineParserRuleCall_2_0_1_0; }
 		
-		//('@run' runRoutine=moeRoutine)?
+		//( '@run'  runRoutine=moeRoutine )?
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'@run'
@@ -5355,8 +6638,9 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Behavior View Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Behavior fmlInfra::Behavior:
-		//	Statemachine;
+		//Behavior returns fmlInfra::Behavior
+		//    : Statemachine
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//Statemachine
@@ -5389,36 +6673,68 @@
 		private final Assignment cInteractionAssignment_2_1 = (Assignment)cUnorderedGroup_2.eContents().get(1);
 		private final RuleCall cInteractionModelOfInteractionParserRuleCall_2_1_0 = (RuleCall)cInteractionAssignment_2_1.eContents().get(0);
 		
-		//MoeBehavior fmlInfra::Behavior:
-		//	{fmlInfra::Behavior} ('@local:' (port+=PortPrivate
-		//	| signal+=SignalPrivate
-		//	| buffer+=BufferPrivate
-		//	| channel+=ChannelPrivate
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPrivate
-		//	| variable+=VariablePrivate)*)? (execution=ModelOfExecution?
-		//	//		& ( computation=ModelOfComputation )?
-		//	& interaction=ModelOfInteraction?);
+		//MoeBehavior returns fmlInfra::Behavior
+		//    : {fmlInfra::Behavior}
+		//        ( '@local:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )?
+		//        ( ( execution=ModelOfExecution )?
+		////        & ( computation=ModelOfComputation )?
+		//        & ( interaction=ModelOfInteraction )?
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Behavior} ('@local:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate |
-		//channel+=ChannelPrivate | typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*)?
-		//(execution=ModelOfExecution? //		& ( computation=ModelOfComputation )?
-		//& interaction=ModelOfInteraction?)
+		// {fmlInfra::Behavior}
+		//        ( '@local:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )?
+		//        ( ( execution=ModelOfExecution )?
+		////        & ( computation=ModelOfComputation )?
+		//        & ( interaction=ModelOfInteraction )?
+		//        )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Behavior}
 		public Action getBehaviorAction_0() { return cBehaviorAction_0; }
 		
-		//('@local:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate |
-		//typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*)?
+		//( '@local:'
+		//    ( port+=PortPrivate
+		//    | signal+=SignalPrivate
+		//    | buffer+=BufferPrivate
+		//    | channel+=ChannelPrivate
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPrivate
+		//    | variable+=VariablePrivate
+		//    )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'@local:'
 		public Keyword getLocalKeyword_1_0() { return cLocalKeyword_1_0; }
 		
-		//(port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*
+		//( port+=PortPrivate
+		//| signal+=SignalPrivate
+		//| buffer+=BufferPrivate
+		//| channel+=ChannelPrivate
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPrivate
+		//| variable+=VariablePrivate
+		//)*
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
 		//port+=PortPrivate
@@ -5463,17 +6779,19 @@
 		//VariablePrivate
 		public RuleCall getVariableVariablePrivateParserRuleCall_1_1_6_0() { return cVariableVariablePrivateParserRuleCall_1_1_6_0; }
 		
-		//(execution=ModelOfExecution? //		& ( computation=ModelOfComputation )?
-		//& interaction=ModelOfInteraction?)
+		//        ( ( execution=ModelOfExecution )?
+		////        & ( computation=ModelOfComputation )?
+		//        & ( interaction=ModelOfInteraction )?
+		//        )
 		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
 		
-		//execution=ModelOfExecution?
+		//( execution=ModelOfExecution )?
 		public Assignment getExecutionAssignment_2_0() { return cExecutionAssignment_2_0; }
 		
 		//ModelOfExecution
 		public RuleCall getExecutionModelOfExecutionParserRuleCall_2_0_0() { return cExecutionModelOfExecutionParserRuleCall_2_0_0; }
 		
-		//interaction=ModelOfInteraction?
+		//( interaction=ModelOfInteraction )?
 		public Assignment getInteractionAssignment_2_1() { return cInteractionAssignment_2_1; }
 		
 		//ModelOfInteraction
@@ -5709,143 +7027,296 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Statemachine Behavior View Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Statemachine fmlStmchn::Statemachine:
-		//	{fmlStmchn::Statemachine} (visibility=VisibilityKind?
-		//	& timed?='timed'?
-		//	& dense_timed?='timed#dense'?
-		//	& discrete_timed?='timed#discrete'?
-		//	& input_enabled?='input_enabled'?
-		//	& lifeline?='lifeline'?
-		//	& design=DesignKind?)
-		//	'statemachine' ('<' 'moc:'? ModelOfComputationKing '>')?
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'{' ('@parameter:' ('input' (parameter+=ParameterInput
-		//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-		//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-		//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-		//	| '{' parameter+=ParameterReturn+ '}'))*
-		//	| (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*) ('@input:'
-		//	parameter+=ParameterInput*
-		//	| '@inout:'
-		//	parameter+=ParameterInout*
-		//	| '@output:'
-		//	parameter+=ParameterOutput*
-		//	| '@return:'
-		//	parameter+=ParameterReturn*)* ('@property:' (port+=Port
-		//	| signal+=Signal
-		//	| buffer+=Buffer
-		//	| channel+=Channel
-		//	| typedef+=TypeDefinition
-		//	| function+=Function
-		//	| variable+=Variable)*
-		//	| '@public:' (port+=PortPublic
-		//	| signal+=SignalPublic
-		//	| buffer+=BufferPublic
-		//	| channel+=ChannelPublic
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPublic
-		//	| variable+=VariablePublic)*
-		//	| '@protected:' (port+=PortProtected
-		//	| signal+=SignalProtected
-		//	| buffer+=BufferProtected
-		//	| channel+=ChannelProtected
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionProtected
-		//	| variable+=VariableProtected)*
-		//	| '@private:' (port+=PortPrivate
-		//	| signal+=SignalPrivate
-		//	| buffer+=BufferPrivate
-		//	| channel+=ChannelPrivate
-		//	| typedef+=TypeDefinition
-		//	| function+=FunctionPrivate
-		//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-		//	| '@procedure:' procedure+=Procedure+)*
-		//	| (routine+=Routine | procedure+=Procedure)+) (('@statemachine:' machine+=Statemachine+
-		//	| '@composite:' machine+=AnyMachineBlock*
-		//	| '@model:' machine+=AnyMachineBlock*
-		//	| '@prototype:' machine+=AnyMachineBlock*
-		//	| '@instance:' instance+=InstanceMachine*)+
-		//	| region+=StatemachineRegion
-		//	| region+=StatemachineNamedRegion+
-		//	| region+=StatemachineRegionLite) (execution=ModelOfExecution?
-		//	//		& ( computation=ModelOfComputation )?
-		//	& interaction=ModelOfInteraction?)
-		//	'}';
+		//Statemachine returns fmlStmchn::Statemachine
+		//    : { fmlStmchn::Statemachine }
+		//        ( ( visibility=VisibilityKind )?
+		//        & ( timed?='timed' )?
+		//        & ( dense_timed?='timed#dense' )?
+		//        & ( discrete_timed?='timed#discrete' )?
+		//        & ( input_enabled ?= 'input_enabled' )?
+		//        & ( lifeline?='lifeline' )?
+		//        & ( design=DesignKind )?
+		//        )
+		//        'statemachine' ( '<' ( 'moc:' )? ModelOfComputationKing '>' )?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//        ( '@parameter:'  //( parameter+=Parameter )+
+		//            ( 'input'
+		//                ( parameter+=ParameterInput
+		//                | '{' ( parameter+=ParameterInput )+ '}'
+		//                )
+		//            | 'inout'
+		//                ( parameter+=ParameterInout
+		//                | '{' ( parameter+=ParameterInout )+ '}'
+		//                )
+		//            | 'output'
+		//                ( parameter+=ParameterOutput
+		//                | '{' ( parameter+=ParameterOutput )+ '}'
+		//                )
+		//            | 'return'
+		//                ( parameter+=ParameterReturn
+		//                | '{' ( parameter+=ParameterReturn )+ '}'
+		//                )
+		//            )*
+		//        | // optional unnamed section for property full declaration / definition
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@input:'
+		//            ( parameter+=ParameterInput  )*
+		//        | '@inout:'
+		//            ( parameter+=ParameterInout  )*
+		//        | '@output:'
+		//            ( parameter+=ParameterOutput )*
+		//        | '@return:'
+		//            ( parameter+=ParameterReturn )*
+		//        )*
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine  | procedure+=Procedure )+
+		//        )
+		////        ( ( '@composite:' | '@statemachine:' )  ( machine +=Statemachine )+
+		//        ( ( '@statemachine:' ( machine +=Statemachine    )+
+		//            | '@composite:'  ( machine +=AnyMachineBlock )*
+		//            | '@model:'      ( machine +=AnyMachineBlock )*
+		//            | '@prototype:'  ( machine +=AnyMachineBlock )*
+		//            | '@instance:'   ( instance+=InstanceMachine )*
+		//            )+
+		//        | region+=StatemachineRegion
+		//        | ( region+=StatemachineNamedRegion )+
+		//        | region+=StatemachineRegionLite
+		//        )
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
+		////
+		////        compositePart=CompositePart
+		////
+		////        ( region+=StatemachineRegion
+		////        | ( region+=StatemachineNamedRegion )+
+		////
+		////        | region+=StatemachineRegionLite
+		////        )
+		//        ( ( execution=ModelOfExecution )?
+		////        & ( computation=ModelOfComputation )?
+		//        & ( interaction=ModelOfInteraction )?
+		//        )
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::Statemachine} (visibility=VisibilityKind? & timed?='timed'? & dense_timed?='timed#dense'? &
-		//discrete_timed?='timed#discrete'? & input_enabled?='input_enabled'? & lifeline?='lifeline'? & design=DesignKind?)
-		//'statemachine' ('<' 'moc:'? ModelOfComputationKing '>')? name=ESIdentifier unrestrictedName=UnrestrictedName? '{'
-		//('@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))* |
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*) ('@input:' parameter+=ParameterInput* | '@inout:' parameter+=ParameterInout* | '@output:'
-		//parameter+=ParameterOutput* | '@return:' parameter+=ParameterReturn*)* ('@property:' (port+=Port | signal+=Signal |
-		//buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function | variable+=Variable)* | '@public:'
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)* | '@protected:' (port+=PortProtected | signal+=SignalProtected |
-		//buffer+=BufferProtected | channel+=ChannelProtected | typedef+=TypeDefinition | function+=FunctionProtected |
-		//variable+=VariableProtected)* | '@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate |
-		//channel+=ChannelPrivate | typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*)*
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+) (('@statemachine:' machine+=Statemachine+ | '@composite:' machine+=AnyMachineBlock* | '@model:'
-		//machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* | '@instance:' instance+=InstanceMachine*)+ |
-		//region+=StatemachineRegion | region+=StatemachineNamedRegion+ | region+=StatemachineRegionLite)
-		//(execution=ModelOfExecution? //		& ( computation=ModelOfComputation )?
-		//& interaction=ModelOfInteraction?) '}'
+		// { fmlStmchn::Statemachine }
+		//        ( ( visibility=VisibilityKind )?
+		//        & ( timed?='timed' )?
+		//        & ( dense_timed?='timed#dense' )?
+		//        & ( discrete_timed?='timed#discrete' )?
+		//        & ( input_enabled ?= 'input_enabled' )?
+		//        & ( lifeline?='lifeline' )?
+		//        & ( design=DesignKind )?
+		//        )
+		//        'statemachine' ( '<' ( 'moc:' )? ModelOfComputationKing '>' )?
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//        ( '@parameter:'  //( parameter+=Parameter )+
+		//            ( 'input'
+		//                ( parameter+=ParameterInput
+		//                | '{' ( parameter+=ParameterInput )+ '}'
+		//                )
+		//            | 'inout'
+		//                ( parameter+=ParameterInout
+		//                | '{' ( parameter+=ParameterInout )+ '}'
+		//                )
+		//            | 'output'
+		//                ( parameter+=ParameterOutput
+		//                | '{' ( parameter+=ParameterOutput )+ '}'
+		//                )
+		//            | 'return'
+		//                ( parameter+=ParameterReturn
+		//                | '{' ( parameter+=ParameterReturn )+ '}'
+		//                )
+		//            )*
+		//        | // optional unnamed section for property full declaration / definition
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        )
+		//        ( '@input:'
+		//            ( parameter+=ParameterInput  )*
+		//        | '@inout:'
+		//            ( parameter+=ParameterInout  )*
+		//        | '@output:'
+		//            ( parameter+=ParameterOutput )*
+		//        | '@return:'
+		//            ( parameter+=ParameterReturn )*
+		//        )*
+		//        ( '@property:'
+		//            ( port+=Port
+		//            | signal+=Signal
+		//            | buffer+=Buffer
+		//            | channel+=Channel
+		//            | typedef+=TypeDefinition
+		//            | function+=Function
+		//            | variable+=Variable
+		//            )*
+		//        | '@public:'
+		//            ( port+=PortPublic
+		//            | signal+=SignalPublic
+		//            | buffer+=BufferPublic
+		//            | channel+=ChannelPublic
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPublic
+		//            | variable+=VariablePublic
+		//            )*
+		//        | '@protected:'
+		//            ( port+=PortProtected
+		//            | signal+=SignalProtected
+		//            | buffer+=BufferProtected
+		//            | channel+=ChannelProtected
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionProtected
+		//            | variable+=VariableProtected
+		//            )*
+		//        | '@private:'
+		//            ( port+=PortPrivate
+		//            | signal+=SignalPrivate
+		//            | buffer+=BufferPrivate
+		//            | channel+=ChannelPrivate
+		//            | typedef+=TypeDefinition
+		//            | function+=FunctionPrivate
+		//            | variable+=VariablePrivate
+		//            )*
+		//        )*
+		//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//          | '@procedure:' ( procedure+=Procedure )+
+		//          )*
+		//        | ( routine+=Routine  | procedure+=Procedure )+
+		//        )
+		////        ( ( '@composite:' | '@statemachine:' )  ( machine +=Statemachine )+
+		//        ( ( '@statemachine:' ( machine +=Statemachine    )+
+		//            | '@composite:'  ( machine +=AnyMachineBlock )*
+		//            | '@model:'      ( machine +=AnyMachineBlock )*
+		//            | '@prototype:'  ( machine +=AnyMachineBlock )*
+		//            | '@instance:'   ( instance+=InstanceMachine )*
+		//            )+
+		//        | region+=StatemachineRegion
+		//        | ( region+=StatemachineNamedRegion )+
+		//        | region+=StatemachineRegionLite
+		//        )
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
+		////
+		////        compositePart=CompositePart
+		////
+		////        ( region+=StatemachineRegion
+		////        | ( region+=StatemachineNamedRegion )+
+		////
+		////        | region+=StatemachineRegionLite
+		////        )
+		//        ( ( execution=ModelOfExecution )?
+		////        & ( computation=ModelOfComputation )?
+		//        & ( interaction=ModelOfInteraction )?
+		//        )
+		//        '}'
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::Statemachine}
+		//{ fmlStmchn::Statemachine }
 		public Action getStatemachineAction_0() { return cStatemachineAction_0; }
 		
-		//(visibility=VisibilityKind? & timed?='timed'? & dense_timed?='timed#dense'? & discrete_timed?='timed#discrete'? &
-		//input_enabled?='input_enabled'? & lifeline?='lifeline'? & design=DesignKind?)
+		//( ( visibility=VisibilityKind )?
+		//& ( timed?='timed' )?
+		//& ( dense_timed?='timed#dense' )?
+		//& ( discrete_timed?='timed#discrete' )?
+		//& ( input_enabled ?= 'input_enabled' )?
+		//& ( lifeline?='lifeline' )?
+		//& ( design=DesignKind )?
+		//)
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1_0() { return cVisibilityAssignment_1_0; }
 		
 		//VisibilityKind
 		public RuleCall getVisibilityVisibilityKindEnumRuleCall_1_0_0() { return cVisibilityVisibilityKindEnumRuleCall_1_0_0; }
 		
-		//timed?='timed'?
+		//( timed?='timed' )?
 		public Assignment getTimedAssignment_1_1() { return cTimedAssignment_1_1; }
 		
 		//'timed'
 		public Keyword getTimedTimedKeyword_1_1_0() { return cTimedTimedKeyword_1_1_0; }
 		
-		//dense_timed?='timed#dense'?
+		//( dense_timed?='timed#dense' )?
 		public Assignment getDense_timedAssignment_1_2() { return cDense_timedAssignment_1_2; }
 		
 		//'timed#dense'
 		public Keyword getDense_timedTimedDenseKeyword_1_2_0() { return cDense_timedTimedDenseKeyword_1_2_0; }
 		
-		//discrete_timed?='timed#discrete'?
+		//( discrete_timed?='timed#discrete' )?
 		public Assignment getDiscrete_timedAssignment_1_3() { return cDiscrete_timedAssignment_1_3; }
 		
 		//'timed#discrete'
 		public Keyword getDiscrete_timedTimedDiscreteKeyword_1_3_0() { return cDiscrete_timedTimedDiscreteKeyword_1_3_0; }
 		
-		//input_enabled?='input_enabled'?
+		//( input_enabled ?= 'input_enabled' )?
 		public Assignment getInput_enabledAssignment_1_4() { return cInput_enabledAssignment_1_4; }
 		
 		//'input_enabled'
 		public Keyword getInput_enabledInput_enabledKeyword_1_4_0() { return cInput_enabledInput_enabledKeyword_1_4_0; }
 		
-		//lifeline?='lifeline'?
+		//( lifeline?='lifeline' )?
 		public Assignment getLifelineAssignment_1_5() { return cLifelineAssignment_1_5; }
 		
 		//'lifeline'
 		public Keyword getLifelineLifelineKeyword_1_5_0() { return cLifelineLifelineKeyword_1_5_0; }
 		
-		//design=DesignKind?
+		//( design=DesignKind )?
 		public Assignment getDesignAssignment_1_6() { return cDesignAssignment_1_6; }
 		
 		//DesignKind
@@ -5854,13 +7325,13 @@
 		//'statemachine'
 		public Keyword getStatemachineKeyword_2() { return cStatemachineKeyword_2; }
 		
-		//('<' 'moc:'? ModelOfComputationKing '>')?
+		//( '<' ( 'moc:' )? ModelOfComputationKing '>' )?
 		public Group getGroup_3() { return cGroup_3; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_3_0() { return cLessThanSignKeyword_3_0; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_3_1() { return cMocKeyword_3_1; }
 		
 		//ModelOfComputationKing
@@ -5875,7 +7346,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
@@ -5884,33 +7355,91 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
 		
-		//('@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))* |
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*)
+		//( '@parameter:'  //( parameter+=Parameter )+
+		//    ( 'input'
+		//        ( parameter+=ParameterInput
+		//        | '{' ( parameter+=ParameterInput )+ '}'
+		//        )
+		//    | 'inout'
+		//        ( parameter+=ParameterInout
+		//        | '{' ( parameter+=ParameterInout )+ '}'
+		//        )
+		//    | 'output'
+		//        ( parameter+=ParameterOutput
+		//        | '{' ( parameter+=ParameterOutput )+ '}'
+		//        )
+		//    | 'return'
+		//        ( parameter+=ParameterReturn
+		//        | '{' ( parameter+=ParameterReturn )+ '}'
+		//        )
+		//    )*
+		//| // optional unnamed section for property full declaration / definition
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//)
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
-		//'@parameter:' ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		//'@parameter:'  //( parameter+=Parameter )+
+		//           ( 'input'
+		//               ( parameter+=ParameterInput
+		//               | '{' ( parameter+=ParameterInput )+ '}'
+		//               )
+		//           | 'inout'
+		//               ( parameter+=ParameterInout
+		//               | '{' ( parameter+=ParameterInout )+ '}'
+		//               )
+		//           | 'output'
+		//               ( parameter+=ParameterOutput
+		//               | '{' ( parameter+=ParameterOutput )+ '}'
+		//               )
+		//           | 'return'
+		//               ( parameter+=ParameterReturn
+		//               | '{' ( parameter+=ParameterReturn )+ '}'
+		//               )
+		//           )*
 		public Group getGroup_7_0() { return cGroup_7_0; }
 		
 		//'@parameter:'
 		public Keyword getParameterKeyword_7_0_0() { return cParameterKeyword_7_0_0; }
 		
-		//('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout | '{'
-		//parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}') |
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		////( parameter+=Parameter )+
+		//          ( 'input'
+		//              ( parameter+=ParameterInput
+		//              | '{' ( parameter+=ParameterInput )+ '}'
+		//              )
+		//          | 'inout'
+		//              ( parameter+=ParameterInout
+		//              | '{' ( parameter+=ParameterInout )+ '}'
+		//              )
+		//          | 'output'
+		//              ( parameter+=ParameterOutput
+		//              | '{' ( parameter+=ParameterOutput )+ '}'
+		//              )
+		//          | 'return'
+		//              ( parameter+=ParameterReturn
+		//              | '{' ( parameter+=ParameterReturn )+ '}'
+		//              )
+		//          )*
 		public Alternatives getAlternatives_7_0_1() { return cAlternatives_7_0_1; }
 		
-		//'input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//'input'
+		//               ( parameter+=ParameterInput
+		//               | '{' ( parameter+=ParameterInput )+ '}'
+		//               )
 		public Group getGroup_7_0_1_0() { return cGroup_7_0_1_0; }
 		
 		//'input'
 		public Keyword getInputKeyword_7_0_1_0_0() { return cInputKeyword_7_0_1_0_0; }
 		
-		//(parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//( parameter+=ParameterInput
+		//| '{' ( parameter+=ParameterInput )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_0_1() { return cAlternatives_7_0_1_0_1; }
 		
 		//parameter+=ParameterInput
@@ -5919,13 +7448,13 @@
 		//ParameterInput
 		public RuleCall getParameterParameterInputParserRuleCall_7_0_1_0_1_0_0() { return cParameterParameterInputParserRuleCall_7_0_1_0_1_0_0; }
 		
-		//'{' parameter+=ParameterInput+ '}'
+		//'{' ( parameter+=ParameterInput )+ '}'
 		public Group getGroup_7_0_1_0_1_1() { return cGroup_7_0_1_0_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_0_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_0_1_1_0; }
 		
-		//parameter+=ParameterInput+
+		//( parameter+=ParameterInput )+
 		public Assignment getParameterAssignment_7_0_1_0_1_1_1() { return cParameterAssignment_7_0_1_0_1_1_1; }
 		
 		//ParameterInput
@@ -5934,13 +7463,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_0_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_0_1_1_2; }
 		
-		//'inout' (parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//'inout'
+		//               ( parameter+=ParameterInout
+		//               | '{' ( parameter+=ParameterInout )+ '}'
+		//               )
 		public Group getGroup_7_0_1_1() { return cGroup_7_0_1_1; }
 		
 		//'inout'
 		public Keyword getInoutKeyword_7_0_1_1_0() { return cInoutKeyword_7_0_1_1_0; }
 		
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//( parameter+=ParameterInout
+		//| '{' ( parameter+=ParameterInout )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_1_1() { return cAlternatives_7_0_1_1_1; }
 		
 		//parameter+=ParameterInout
@@ -5949,13 +7483,13 @@
 		//ParameterInout
 		public RuleCall getParameterParameterInoutParserRuleCall_7_0_1_1_1_0_0() { return cParameterParameterInoutParserRuleCall_7_0_1_1_1_0_0; }
 		
-		//'{' parameter+=ParameterInout+ '}'
+		//'{' ( parameter+=ParameterInout )+ '}'
 		public Group getGroup_7_0_1_1_1_1() { return cGroup_7_0_1_1_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_1_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_1_1_1_0; }
 		
-		//parameter+=ParameterInout+
+		//( parameter+=ParameterInout )+
 		public Assignment getParameterAssignment_7_0_1_1_1_1_1() { return cParameterAssignment_7_0_1_1_1_1_1; }
 		
 		//ParameterInout
@@ -5964,13 +7498,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_1_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_1_1_1_2; }
 		
-		//'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//'output'
+		//               ( parameter+=ParameterOutput
+		//               | '{' ( parameter+=ParameterOutput )+ '}'
+		//               )
 		public Group getGroup_7_0_1_2() { return cGroup_7_0_1_2; }
 		
 		//'output'
 		public Keyword getOutputKeyword_7_0_1_2_0() { return cOutputKeyword_7_0_1_2_0; }
 		
-		//(parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//( parameter+=ParameterOutput
+		//| '{' ( parameter+=ParameterOutput )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_2_1() { return cAlternatives_7_0_1_2_1; }
 		
 		//parameter+=ParameterOutput
@@ -5979,13 +7518,13 @@
 		//ParameterOutput
 		public RuleCall getParameterParameterOutputParserRuleCall_7_0_1_2_1_0_0() { return cParameterParameterOutputParserRuleCall_7_0_1_2_1_0_0; }
 		
-		//'{' parameter+=ParameterOutput+ '}'
+		//'{' ( parameter+=ParameterOutput )+ '}'
 		public Group getGroup_7_0_1_2_1_1() { return cGroup_7_0_1_2_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_2_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_2_1_1_0; }
 		
-		//parameter+=ParameterOutput+
+		//( parameter+=ParameterOutput )+
 		public Assignment getParameterAssignment_7_0_1_2_1_1_1() { return cParameterAssignment_7_0_1_2_1_1_1; }
 		
 		//ParameterOutput
@@ -5994,13 +7533,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_2_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_2_1_1_2; }
 		
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//'return'
+		//               ( parameter+=ParameterReturn
+		//               | '{' ( parameter+=ParameterReturn )+ '}'
+		//               )
 		public Group getGroup_7_0_1_3() { return cGroup_7_0_1_3; }
 		
 		//'return'
 		public Keyword getReturnKeyword_7_0_1_3_0() { return cReturnKeyword_7_0_1_3_0; }
 		
-		//(parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//( parameter+=ParameterReturn
+		//| '{' ( parameter+=ParameterReturn )+ '}'
+		//)
 		public Alternatives getAlternatives_7_0_1_3_1() { return cAlternatives_7_0_1_3_1; }
 		
 		//parameter+=ParameterReturn
@@ -6009,13 +7553,13 @@
 		//ParameterReturn
 		public RuleCall getParameterParameterReturnParserRuleCall_7_0_1_3_1_0_0() { return cParameterParameterReturnParserRuleCall_7_0_1_3_1_0_0; }
 		
-		//'{' parameter+=ParameterReturn+ '}'
+		//'{' ( parameter+=ParameterReturn )+ '}'
 		public Group getGroup_7_0_1_3_1_1() { return cGroup_7_0_1_3_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7_0_1_3_1_1_0() { return cLeftCurlyBracketKeyword_7_0_1_3_1_1_0; }
 		
-		//parameter+=ParameterReturn+
+		//( parameter+=ParameterReturn )+
 		public Assignment getParameterAssignment_7_0_1_3_1_1_1() { return cParameterAssignment_7_0_1_3_1_1_1; }
 		
 		//ParameterReturn
@@ -6024,8 +7568,15 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_7_0_1_3_1_1_2() { return cRightCurlyBracketKeyword_7_0_1_3_1_1_2; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//// optional unnamed section for property full declaration / definition
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
 		
 		//port+=Port
@@ -6070,76 +7621,130 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_7_1_6_0() { return cVariableVariableParserRuleCall_7_1_6_0; }
 		
-		//('@input:' parameter+=ParameterInput* | '@inout:' parameter+=ParameterInout* | '@output:' parameter+=ParameterOutput* |
-		//'@return:' parameter+=ParameterReturn*)*
+		//( '@input:'
+		//    ( parameter+=ParameterInput  )*
+		//| '@inout:'
+		//    ( parameter+=ParameterInout  )*
+		//| '@output:'
+		//    ( parameter+=ParameterOutput )*
+		//| '@return:'
+		//    ( parameter+=ParameterReturn )*
+		//)*
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
-		//'@input:' parameter+=ParameterInput*
+		//'@input:'
+		//           ( parameter+=ParameterInput  )*
 		public Group getGroup_8_0() { return cGroup_8_0; }
 		
 		//'@input:'
 		public Keyword getInputKeyword_8_0_0() { return cInputKeyword_8_0_0; }
 		
-		//parameter+=ParameterInput*
+		//( parameter+=ParameterInput  )*
 		public Assignment getParameterAssignment_8_0_1() { return cParameterAssignment_8_0_1; }
 		
 		//ParameterInput
 		public RuleCall getParameterParameterInputParserRuleCall_8_0_1_0() { return cParameterParameterInputParserRuleCall_8_0_1_0; }
 		
-		//'@inout:' parameter+=ParameterInout*
+		//'@inout:'
+		//           ( parameter+=ParameterInout  )*
 		public Group getGroup_8_1() { return cGroup_8_1; }
 		
 		//'@inout:'
 		public Keyword getInoutKeyword_8_1_0() { return cInoutKeyword_8_1_0; }
 		
-		//parameter+=ParameterInout*
+		//( parameter+=ParameterInout  )*
 		public Assignment getParameterAssignment_8_1_1() { return cParameterAssignment_8_1_1; }
 		
 		//ParameterInout
 		public RuleCall getParameterParameterInoutParserRuleCall_8_1_1_0() { return cParameterParameterInoutParserRuleCall_8_1_1_0; }
 		
-		//'@output:' parameter+=ParameterOutput*
+		//'@output:'
+		//           ( parameter+=ParameterOutput )*
 		public Group getGroup_8_2() { return cGroup_8_2; }
 		
 		//'@output:'
 		public Keyword getOutputKeyword_8_2_0() { return cOutputKeyword_8_2_0; }
 		
-		//parameter+=ParameterOutput*
+		//( parameter+=ParameterOutput )*
 		public Assignment getParameterAssignment_8_2_1() { return cParameterAssignment_8_2_1; }
 		
 		//ParameterOutput
 		public RuleCall getParameterParameterOutputParserRuleCall_8_2_1_0() { return cParameterParameterOutputParserRuleCall_8_2_1_0; }
 		
-		//'@return:' parameter+=ParameterReturn*
+		//'@return:'
+		//           ( parameter+=ParameterReturn )*
 		public Group getGroup_8_3() { return cGroup_8_3; }
 		
 		//'@return:'
 		public Keyword getReturnKeyword_8_3_0() { return cReturnKeyword_8_3_0; }
 		
-		//parameter+=ParameterReturn*
+		//( parameter+=ParameterReturn )*
 		public Assignment getParameterAssignment_8_3_1() { return cParameterAssignment_8_3_1; }
 		
 		//ParameterReturn
 		public RuleCall getParameterParameterReturnParserRuleCall_8_3_1_0() { return cParameterParameterReturnParserRuleCall_8_3_1_0; }
 		
-		//('@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)* | '@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic
-		//| channel+=ChannelPublic | typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)* |
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)* | '@private:' (port+=PortPrivate
-		//| signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*)*
+		//( '@property:'
+		//    ( port+=Port
+		//    | signal+=Signal
+		//    | buffer+=Buffer
+		//    | channel+=Channel
+		//    | typedef+=TypeDefinition
+		//    | function+=Function
+		//    | variable+=Variable
+		//    )*
+		//| '@public:'
+		//    ( port+=PortPublic
+		//    | signal+=SignalPublic
+		//    | buffer+=BufferPublic
+		//    | channel+=ChannelPublic
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPublic
+		//    | variable+=VariablePublic
+		//    )*
+		//| '@protected:'
+		//    ( port+=PortProtected
+		//    | signal+=SignalProtected
+		//    | buffer+=BufferProtected
+		//    | channel+=ChannelProtected
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionProtected
+		//    | variable+=VariableProtected
+		//    )*
+		//| '@private:'
+		//    ( port+=PortPrivate
+		//    | signal+=SignalPrivate
+		//    | buffer+=BufferPrivate
+		//    | channel+=ChannelPrivate
+		//    | typedef+=TypeDefinition
+		//    | function+=FunctionPrivate
+		//    | variable+=VariablePrivate
+		//    )*
+		//)*
 		public Alternatives getAlternatives_9() { return cAlternatives_9; }
 		
-		//'@property:' (port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition |
-		//function+=Function | variable+=Variable)*
+		//'@property:'
+		//           ( port+=Port
+		//           | signal+=Signal
+		//           | buffer+=Buffer
+		//           | channel+=Channel
+		//           | typedef+=TypeDefinition
+		//           | function+=Function
+		//           | variable+=Variable
+		//           )*
 		public Group getGroup_9_0() { return cGroup_9_0; }
 		
 		//'@property:'
 		public Keyword getPropertyKeyword_9_0_0() { return cPropertyKeyword_9_0_0; }
 		
-		//(port+=Port | signal+=Signal | buffer+=Buffer | channel+=Channel | typedef+=TypeDefinition | function+=Function |
-		//variable+=Variable)*
+		//( port+=Port
+		//| signal+=Signal
+		//| buffer+=Buffer
+		//| channel+=Channel
+		//| typedef+=TypeDefinition
+		//| function+=Function
+		//| variable+=Variable
+		//)*
 		public Alternatives getAlternatives_9_0_1() { return cAlternatives_9_0_1; }
 		
 		//port+=Port
@@ -6184,15 +7789,28 @@
 		//Variable
 		public RuleCall getVariableVariableParserRuleCall_9_0_1_6_0() { return cVariableVariableParserRuleCall_9_0_1_6_0; }
 		
-		//'@public:' (port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic |
-		//typedef+=TypeDefinition | function+=FunctionPublic | variable+=VariablePublic)*
+		//'@public:'
+		//           ( port+=PortPublic
+		//           | signal+=SignalPublic
+		//           | buffer+=BufferPublic
+		//           | channel+=ChannelPublic
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPublic
+		//           | variable+=VariablePublic
+		//           )*
 		public Group getGroup_9_1() { return cGroup_9_1; }
 		
 		//'@public:'
 		public Keyword getPublicKeyword_9_1_0() { return cPublicKeyword_9_1_0; }
 		
-		//(port+=PortPublic | signal+=SignalPublic | buffer+=BufferPublic | channel+=ChannelPublic | typedef+=TypeDefinition |
-		//function+=FunctionPublic | variable+=VariablePublic)*
+		//( port+=PortPublic
+		//| signal+=SignalPublic
+		//| buffer+=BufferPublic
+		//| channel+=ChannelPublic
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPublic
+		//| variable+=VariablePublic
+		//)*
 		public Alternatives getAlternatives_9_1_1() { return cAlternatives_9_1_1; }
 		
 		//port+=PortPublic
@@ -6237,15 +7855,28 @@
 		//VariablePublic
 		public RuleCall getVariableVariablePublicParserRuleCall_9_1_1_6_0() { return cVariableVariablePublicParserRuleCall_9_1_1_6_0; }
 		
-		//'@protected:' (port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//'@protected:'
+		//           ( port+=PortProtected
+		//           | signal+=SignalProtected
+		//           | buffer+=BufferProtected
+		//           | channel+=ChannelProtected
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionProtected
+		//           | variable+=VariableProtected
+		//           )*
 		public Group getGroup_9_2() { return cGroup_9_2; }
 		
 		//'@protected:'
 		public Keyword getProtectedKeyword_9_2_0() { return cProtectedKeyword_9_2_0; }
 		
-		//(port+=PortProtected | signal+=SignalProtected | buffer+=BufferProtected | channel+=ChannelProtected |
-		//typedef+=TypeDefinition | function+=FunctionProtected | variable+=VariableProtected)*
+		//( port+=PortProtected
+		//| signal+=SignalProtected
+		//| buffer+=BufferProtected
+		//| channel+=ChannelProtected
+		//| typedef+=TypeDefinition
+		//| function+=FunctionProtected
+		//| variable+=VariableProtected
+		//)*
 		public Alternatives getAlternatives_9_2_1() { return cAlternatives_9_2_1; }
 		
 		//port+=PortProtected
@@ -6290,15 +7921,28 @@
 		//VariableProtected
 		public RuleCall getVariableVariableProtectedParserRuleCall_9_2_1_6_0() { return cVariableVariableProtectedParserRuleCall_9_2_1_6_0; }
 		
-		//'@private:' (port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate |
-		//typedef+=TypeDefinition | function+=FunctionPrivate | variable+=VariablePrivate)*
+		//'@private:'
+		//           ( port+=PortPrivate
+		//           | signal+=SignalPrivate
+		//           | buffer+=BufferPrivate
+		//           | channel+=ChannelPrivate
+		//           | typedef+=TypeDefinition
+		//           | function+=FunctionPrivate
+		//           | variable+=VariablePrivate
+		//           )*
 		public Group getGroup_9_3() { return cGroup_9_3; }
 		
 		//'@private:'
 		public Keyword getPrivateKeyword_9_3_0() { return cPrivateKeyword_9_3_0; }
 		
-		//(port+=PortPrivate | signal+=SignalPrivate | buffer+=BufferPrivate | channel+=ChannelPrivate | typedef+=TypeDefinition |
-		//function+=FunctionPrivate | variable+=VariablePrivate)*
+		//( port+=PortPrivate
+		//| signal+=SignalPrivate
+		//| buffer+=BufferPrivate
+		//| channel+=ChannelPrivate
+		//| typedef+=TypeDefinition
+		//| function+=FunctionPrivate
+		//| variable+=VariablePrivate
+		//)*
 		public Alternatives getAlternatives_9_3_1() { return cAlternatives_9_3_1; }
 		
 		//port+=PortPrivate
@@ -6343,17 +7987,22 @@
 		//VariablePrivate
 		public RuleCall getVariableVariablePrivateParserRuleCall_9_3_1_6_0() { return cVariableVariablePrivateParserRuleCall_9_3_1_6_0; }
 		
-		//((('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)* | (routine+=Routine |
-		//procedure+=Procedure)+)
+		//( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//  | '@procedure:' ( procedure+=Procedure )+
+		//  )*
+		//| ( routine+=Routine  | procedure+=Procedure )+
+		//)
 		public Alternatives getAlternatives_10() { return cAlternatives_10; }
 		
-		//(('@routine:' | '@macro:') routine+=Routine+ | '@procedure:' procedure+=Procedure+)*
+		//( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+		//         | '@procedure:' ( procedure+=Procedure )+
+		//         )*
 		public Alternatives getAlternatives_10_0() { return cAlternatives_10_0; }
 		
-		//('@routine:' | '@macro:') routine+=Routine+
+		//( '@routine:' | '@macro:' ) ( routine+=Routine )+
 		public Group getGroup_10_0_0() { return cGroup_10_0_0; }
 		
-		//('@routine:' | '@macro:')
+		//( '@routine:' | '@macro:' )
 		public Alternatives getAlternatives_10_0_0_0() { return cAlternatives_10_0_0_0; }
 		
 		//'@routine:'
@@ -6362,25 +8011,25 @@
 		//'@macro:'
 		public Keyword getMacroKeyword_10_0_0_0_1() { return cMacroKeyword_10_0_0_0_1; }
 		
-		//routine+=Routine+
+		//( routine+=Routine )+
 		public Assignment getRoutineAssignment_10_0_0_1() { return cRoutineAssignment_10_0_0_1; }
 		
 		//Routine
 		public RuleCall getRoutineRoutineParserRuleCall_10_0_0_1_0() { return cRoutineRoutineParserRuleCall_10_0_0_1_0; }
 		
-		//'@procedure:' procedure+=Procedure+
+		//'@procedure:' ( procedure+=Procedure )+
 		public Group getGroup_10_0_1() { return cGroup_10_0_1; }
 		
 		//'@procedure:'
 		public Keyword getProcedureKeyword_10_0_1_0() { return cProcedureKeyword_10_0_1_0; }
 		
-		//procedure+=Procedure+
+		//( procedure+=Procedure )+
 		public Assignment getProcedureAssignment_10_0_1_1() { return cProcedureAssignment_10_0_1_1; }
 		
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_10_0_1_1_0() { return cProcedureProcedureParserRuleCall_10_0_1_1_0; }
 		
-		//(routine+=Routine | procedure+=Procedure)+
+		//( routine+=Routine  | procedure+=Procedure )+
 		public Alternatives getAlternatives_10_1() { return cAlternatives_10_1; }
 		
 		//routine+=Routine
@@ -6395,70 +8044,82 @@
 		//Procedure
 		public RuleCall getProcedureProcedureParserRuleCall_10_1_1_0() { return cProcedureProcedureParserRuleCall_10_1_1_0; }
 		
-		//(('@statemachine:' machine+=Statemachine+ | '@composite:' machine+=AnyMachineBlock* | '@model:'
-		//machine+=AnyMachineBlock* | '@prototype:' machine+=AnyMachineBlock* | '@instance:' instance+=InstanceMachine*)+ |
-		//region+=StatemachineRegion | region+=StatemachineNamedRegion+ | region+=StatemachineRegionLite)
+		////        ( ( '@composite:' | '@statemachine:' )  ( machine +=Statemachine )+
+		//        ( ( '@statemachine:' ( machine +=Statemachine    )+
+		//            | '@composite:'  ( machine +=AnyMachineBlock )*
+		//            | '@model:'      ( machine +=AnyMachineBlock )*
+		//            | '@prototype:'  ( machine +=AnyMachineBlock )*
+		//            | '@instance:'   ( instance+=InstanceMachine )*
+		//            )+
+		//        | region+=StatemachineRegion
+		//        | ( region+=StatemachineNamedRegion )+
+		//        | region+=StatemachineRegionLite
+		//        )
 		public Alternatives getAlternatives_11() { return cAlternatives_11; }
 		
-		//('@statemachine:' machine+=Statemachine+ | '@composite:' machine+=AnyMachineBlock* | '@model:' machine+=AnyMachineBlock*
-		//| '@prototype:' machine+=AnyMachineBlock* | '@instance:' instance+=InstanceMachine*)+
+		//( '@statemachine:' ( machine +=Statemachine    )+
+		//           | '@composite:'  ( machine +=AnyMachineBlock )*
+		//           | '@model:'      ( machine +=AnyMachineBlock )*
+		//           | '@prototype:'  ( machine +=AnyMachineBlock )*
+		//           | '@instance:'   ( instance+=InstanceMachine )*
+		//           )+
 		public Alternatives getAlternatives_11_0() { return cAlternatives_11_0; }
 		
-		//'@statemachine:' machine+=Statemachine+
+		//'@statemachine:' ( machine +=Statemachine    )+
 		public Group getGroup_11_0_0() { return cGroup_11_0_0; }
 		
 		//'@statemachine:'
 		public Keyword getStatemachineKeyword_11_0_0_0() { return cStatemachineKeyword_11_0_0_0; }
 		
-		//machine+=Statemachine+
+		//( machine +=Statemachine    )+
 		public Assignment getMachineAssignment_11_0_0_1() { return cMachineAssignment_11_0_0_1; }
 		
 		//Statemachine
 		public RuleCall getMachineStatemachineParserRuleCall_11_0_0_1_0() { return cMachineStatemachineParserRuleCall_11_0_0_1_0; }
 		
-		//'@composite:' machine+=AnyMachineBlock*
+		//'@composite:'  ( machine +=AnyMachineBlock )*
 		public Group getGroup_11_0_1() { return cGroup_11_0_1; }
 		
 		//'@composite:'
 		public Keyword getCompositeKeyword_11_0_1_0() { return cCompositeKeyword_11_0_1_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_11_0_1_1() { return cMachineAssignment_11_0_1_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_11_0_1_1_0() { return cMachineAnyMachineBlockParserRuleCall_11_0_1_1_0; }
 		
-		//'@model:' machine+=AnyMachineBlock*
+		//'@model:'      ( machine +=AnyMachineBlock )*
 		public Group getGroup_11_0_2() { return cGroup_11_0_2; }
 		
 		//'@model:'
 		public Keyword getModelKeyword_11_0_2_0() { return cModelKeyword_11_0_2_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_11_0_2_1() { return cMachineAssignment_11_0_2_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_11_0_2_1_0() { return cMachineAnyMachineBlockParserRuleCall_11_0_2_1_0; }
 		
-		//'@prototype:' machine+=AnyMachineBlock*
+		//'@prototype:'  ( machine +=AnyMachineBlock )*
 		public Group getGroup_11_0_3() { return cGroup_11_0_3; }
 		
 		//'@prototype:'
 		public Keyword getPrototypeKeyword_11_0_3_0() { return cPrototypeKeyword_11_0_3_0; }
 		
-		//machine+=AnyMachineBlock*
+		//( machine +=AnyMachineBlock )*
 		public Assignment getMachineAssignment_11_0_3_1() { return cMachineAssignment_11_0_3_1; }
 		
 		//AnyMachineBlock
 		public RuleCall getMachineAnyMachineBlockParserRuleCall_11_0_3_1_0() { return cMachineAnyMachineBlockParserRuleCall_11_0_3_1_0; }
 		
-		//'@instance:' instance+=InstanceMachine*
+		//'@instance:'   ( instance+=InstanceMachine )*
 		public Group getGroup_11_0_4() { return cGroup_11_0_4; }
 		
 		//'@instance:'
 		public Keyword getInstanceKeyword_11_0_4_0() { return cInstanceKeyword_11_0_4_0; }
 		
-		//instance+=InstanceMachine*
+		//( instance+=InstanceMachine )*
 		public Assignment getInstanceAssignment_11_0_4_1() { return cInstanceAssignment_11_0_4_1; }
 		
 		//InstanceMachine
@@ -6470,7 +8131,7 @@
 		//StatemachineRegion
 		public RuleCall getRegionStatemachineRegionParserRuleCall_11_1_0() { return cRegionStatemachineRegionParserRuleCall_11_1_0; }
 		
-		//region+=StatemachineNamedRegion+
+		//( region+=StatemachineNamedRegion )+
 		public Assignment getRegionAssignment_11_2() { return cRegionAssignment_11_2; }
 		
 		//StatemachineNamedRegion
@@ -6482,17 +8143,29 @@
 		//StatemachineRegionLite
 		public RuleCall getRegionStatemachineRegionLiteParserRuleCall_11_3_0() { return cRegionStatemachineRegionLiteParserRuleCall_11_3_0; }
 		
-		//(execution=ModelOfExecution? //		& ( computation=ModelOfComputation )?
-		//& interaction=ModelOfInteraction?)
+		////        // optional unnamed section for property full declaration / definition
+		////        propertyPart=PropertyPart
+		////
+		////        compositePart=CompositePart
+		////
+		////        ( region+=StatemachineRegion
+		////        | ( region+=StatemachineNamedRegion )+
+		////
+		////        | region+=StatemachineRegionLite
+		////        )
+		//        ( ( execution=ModelOfExecution )?
+		////        & ( computation=ModelOfComputation )?
+		//        & ( interaction=ModelOfInteraction )?
+		//        )
 		public UnorderedGroup getUnorderedGroup_12() { return cUnorderedGroup_12; }
 		
-		//execution=ModelOfExecution?
+		//( execution=ModelOfExecution )?
 		public Assignment getExecutionAssignment_12_0() { return cExecutionAssignment_12_0; }
 		
 		//ModelOfExecution
 		public RuleCall getExecutionModelOfExecutionParserRuleCall_12_0_0() { return cExecutionModelOfExecutionParserRuleCall_12_0_0; }
 		
-		//interaction=ModelOfInteraction?
+		//( interaction=ModelOfInteraction )?
 		public Assignment getInteractionAssignment_12_1() { return cInteractionAssignment_12_1; }
 		
 		//ModelOfInteraction
@@ -6514,18 +8187,26 @@
 		private final Assignment cVertexAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
 		private final RuleCall cVertexPseudostateParserRuleCall_2_1_0 = (RuleCall)cVertexAssignment_2_1.eContents().get(0);
 		
-		//StatemachineRegion fmlStmchn::Region:
-		//	{fmlStmchn::Region} ('@state:' | '@region:') (vertex+=State
-		//	| vertex+=Pseudostate)+;
+		//StatemachineRegion returns fmlStmchn::Region
+		//    : {fmlStmchn::Region}
+		//        ( '@state:' | '@region:' )
+		//        ( vertex+=State
+		//        | vertex+=Pseudostate
+		//        )+
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::Region} ('@state:' | '@region:') (vertex+=State | vertex+=Pseudostate)+
+		//{fmlStmchn::Region}
+		//       ( '@state:' | '@region:' )
+		//       ( vertex+=State
+		//       | vertex+=Pseudostate
+		//       )+
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmchn::Region}
 		public Action getRegionAction_0() { return cRegionAction_0; }
 		
-		//('@state:' | '@region:')
+		//( '@state:' | '@region:' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'@state:'
@@ -6534,7 +8215,9 @@
 		//'@region:'
 		public Keyword getRegionKeyword_1_1() { return cRegionKeyword_1_1; }
 		
-		//(vertex+=State | vertex+=Pseudostate)+
+		//( vertex+=State
+		//| vertex+=Pseudostate
+		//)+
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
 		//vertex+=State
@@ -6568,15 +8251,22 @@
 		private final Assignment cVertexAssignment_6_1 = (Assignment)cAlternatives_6.eContents().get(1);
 		private final RuleCall cVertexPseudostateParserRuleCall_6_1_0 = (RuleCall)cVertexAssignment_6_1.eContents().get(0);
 		
-		//StatemachineNamedRegion fmlStmchn::Region:
-		//	{fmlStmchn::Region}
-		//	'@region(' ('id:' | 'name:')? name=ESIdentifier
-		//	unrestrictedName=UnrestrictedName? '):' (vertex+=State
-		//	| vertex+=Pseudostate)+;
+		//StatemachineNamedRegion returns fmlStmchn::Region
+		//    : {fmlStmchn::Region}
+		//        '@region(' ( 'id:' | 'name:' )?  name=ESIdentifier
+		//            ( unrestrictedName=UnrestrictedName )?  '):'
+		//        ( vertex+=State
+		//        | vertex+=Pseudostate
+		//        )+
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::Region} '@region(' ('id:' | 'name:')? name=ESIdentifier unrestrictedName=UnrestrictedName? '):'
-		//(vertex+=State | vertex+=Pseudostate)+
+		//{fmlStmchn::Region}
+		//       '@region(' ( 'id:' | 'name:' )?  name=ESIdentifier
+		//           ( unrestrictedName=UnrestrictedName )?  '):'
+		//       ( vertex+=State
+		//       | vertex+=Pseudostate
+		//       )+
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmchn::Region}
@@ -6585,7 +8275,7 @@
 		//'@region('
 		public Keyword getRegionKeyword_1() { return cRegionKeyword_1; }
 		
-		//('id:' | 'name:')?
+		//( 'id:' | 'name:' )?
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
 		//'id:'
@@ -6600,7 +8290,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -6609,7 +8299,9 @@
 		//'):'
 		public Keyword getRightParenthesisColonKeyword_5() { return cRightParenthesisColonKeyword_5; }
 		
-		//(vertex+=State | vertex+=Pseudostate)+
+		//( vertex+=State
+		//| vertex+=Pseudostate
+		//)+
 		public Alternatives getAlternatives_6() { return cAlternatives_6; }
 		
 		//vertex+=State
@@ -6632,11 +8324,12 @@
 		private final Assignment cVertexAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
 		private final RuleCall cVertexPseudostateParserRuleCall_1_0 = (RuleCall)cVertexAssignment_1.eContents().get(0);
 		
-		//StatemachineRegionLite fmlStmchn::Region:
-		//	(vertex+=State | vertex+=Pseudostate)+;
+		//StatemachineRegionLite returns fmlStmchn::Region
+		//    : ( vertex+=State | vertex+=Pseudostate )+
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//(vertex+=State | vertex+=Pseudostate)+
+		//( vertex+=State | vertex+=Pseudostate )+
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//vertex+=State
@@ -6662,14 +8355,18 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// State Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//State fmlStmchn::State:
-		//	CompositeState
-		//	| StartState
-		//	| SimpleState
-		//	| FinalState;
+		//State returns fmlStmchn::State
+		//    : CompositeState
+		//    | StartState
+		//    | SimpleState
+		//    | FinalState
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//CompositeState | StartState | SimpleState | FinalState
+		//CompositeState
+		//   | StartState
+		//   | SimpleState
+		//   | FinalState
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//CompositeState
@@ -6732,25 +8429,49 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// CompositeState Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//CompositeState fmlStmchn::State:
-		//	{fmlStmchn::State} composite?='state' '<' 'moc:'? ('or' | orthogonal?='and') '>'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('{' ((region+=StatemachineRegion
-		//	| region+=StatemachineNamedRegion+) & ('@moe:' moe=moeCompositeStateRoutines)?
-		//	& '@transition:' transition+=Transition*
-		//	| region+=StatemachineRegionLite*
-		//	& moe=moeCompositeStateRoutines?
-		//	& transition+=Transition*)
-		//	'}'
-		//	| ';');
+		//CompositeState returns fmlStmchn::State
+		//    : { fmlStmchn::State }
+		//        composite?='state' '<' ( 'moc:' )? ( 'or' | orthogonal?='and' ) '>'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( '{'
+		//            ( ( ( region+=StatemachineRegion
+		//                | ( region+=StatemachineNamedRegion )+
+		//                )
+		//              & ( '@moe:' moe=moeCompositeStateRoutines )?
+		//              & '@transition:' ( transition+=Transition )*
+		//              )
+		//            | ( ( region+=StatemachineRegionLite )*
+		//              & ( moe=moeCompositeStateRoutines  )?
+		//              & ( transition+=Transition )*
+		//              )
+		//            )
+		//          '}'
+		//        | ';'
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::State} composite?='state' '<' 'moc:'? ('or' | orthogonal?='and') '>' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('{' ((region+=StatemachineRegion | region+=StatemachineNamedRegion+) & ('@moe:'
-		//moe=moeCompositeStateRoutines)? & '@transition:' transition+=Transition* | region+=StatemachineRegionLite* &
-		//moe=moeCompositeStateRoutines? & transition+=Transition*) '}' | ';')
+		//{ fmlStmchn::State }
+		//       composite?='state' '<' ( 'moc:' )? ( 'or' | orthogonal?='and' ) '>'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( '{'
+		//           ( ( ( region+=StatemachineRegion
+		//               | ( region+=StatemachineNamedRegion )+
+		//               )
+		//             & ( '@moe:' moe=moeCompositeStateRoutines )?
+		//             & '@transition:' ( transition+=Transition )*
+		//             )
+		//           | ( ( region+=StatemachineRegionLite )*
+		//             & ( moe=moeCompositeStateRoutines  )?
+		//             & ( transition+=Transition )*
+		//             )
+		//           )
+		//         '}'
+		//       | ';'
+		//       )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::State}
+		//{ fmlStmchn::State }
 		public Action getStateAction_0() { return cStateAction_0; }
 		
 		//composite?='state'
@@ -6762,10 +8483,10 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_2() { return cLessThanSignKeyword_2; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_3() { return cMocKeyword_3; }
 		
-		//('or' | orthogonal?='and')
+		//( 'or' | orthogonal?='and' )
 		public Alternatives getAlternatives_4() { return cAlternatives_4; }
 		
 		//'or'
@@ -6786,35 +8507,71 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_6_0() { return cNameESIdentifierParserRuleCall_6_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_7() { return cUnrestrictedNameAssignment_7; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_7_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_7_0; }
 		
-		//('{' ((region+=StatemachineRegion | region+=StatemachineNamedRegion+) & ('@moe:' moe=moeCompositeStateRoutines)? &
-		//'@transition:' transition+=Transition* | region+=StatemachineRegionLite* & moe=moeCompositeStateRoutines? &
-		//transition+=Transition*) '}' | ';')
+		//( '{'
+		//    ( ( ( region+=StatemachineRegion
+		//        | ( region+=StatemachineNamedRegion )+
+		//        )
+		//      & ( '@moe:' moe=moeCompositeStateRoutines )?
+		//      & '@transition:' ( transition+=Transition )*
+		//      )
+		//    | ( ( region+=StatemachineRegionLite )*
+		//      & ( moe=moeCompositeStateRoutines  )?
+		//      & ( transition+=Transition )*
+		//      )
+		//    )
+		//  '}'
+		//| ';'
+		//)
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
-		//'{' ((region+=StatemachineRegion | region+=StatemachineNamedRegion+) & ('@moe:' moe=moeCompositeStateRoutines)? &
-		//'@transition:' transition+=Transition* | region+=StatemachineRegionLite* & moe=moeCompositeStateRoutines? &
-		//transition+=Transition*) '}'
+		//'{'
+		//           ( ( ( region+=StatemachineRegion
+		//               | ( region+=StatemachineNamedRegion )+
+		//               )
+		//             & ( '@moe:' moe=moeCompositeStateRoutines )?
+		//             & '@transition:' ( transition+=Transition )*
+		//             )
+		//           | ( ( region+=StatemachineRegionLite )*
+		//             & ( moe=moeCompositeStateRoutines  )?
+		//             & ( transition+=Transition )*
+		//             )
+		//           )
+		//         '}'
 		public Group getGroup_8_0() { return cGroup_8_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_8_0_0() { return cLeftCurlyBracketKeyword_8_0_0; }
 		
-		//((region+=StatemachineRegion | region+=StatemachineNamedRegion+) & ('@moe:' moe=moeCompositeStateRoutines)? &
-		//'@transition:' transition+=Transition* | region+=StatemachineRegionLite* & moe=moeCompositeStateRoutines? &
-		//transition+=Transition*)
+		//( ( ( region+=StatemachineRegion
+		//    | ( region+=StatemachineNamedRegion )+
+		//    )
+		//  & ( '@moe:' moe=moeCompositeStateRoutines )?
+		//  & '@transition:' ( transition+=Transition )*
+		//  )
+		//| ( ( region+=StatemachineRegionLite )*
+		//  & ( moe=moeCompositeStateRoutines  )?
+		//  & ( transition+=Transition )*
+		//  )
+		//)
 		public Alternatives getAlternatives_8_0_1() { return cAlternatives_8_0_1; }
 		
-		//(region+=StatemachineRegion | region+=StatemachineNamedRegion+) & ('@moe:' moe=moeCompositeStateRoutines)? &
-		//'@transition:' transition+=Transition*
+		//( ( region+=StatemachineRegion
+		//               | ( region+=StatemachineNamedRegion )+
+		//               )
+		//             & ( '@moe:' moe=moeCompositeStateRoutines )?
+		//             & '@transition:' ( transition+=Transition )*
+		//             )
 		public UnorderedGroup getUnorderedGroup_8_0_1_0() { return cUnorderedGroup_8_0_1_0; }
 		
-		//(region+=StatemachineRegion | region+=StatemachineNamedRegion+)
+		//( region+=StatemachineRegion
+		//               | ( region+=StatemachineNamedRegion )+
+		//               )
 		public Alternatives getAlternatives_8_0_1_0_0() { return cAlternatives_8_0_1_0_0; }
 		
 		//region+=StatemachineRegion
@@ -6823,13 +8580,13 @@
 		//StatemachineRegion
 		public RuleCall getRegionStatemachineRegionParserRuleCall_8_0_1_0_0_0_0() { return cRegionStatemachineRegionParserRuleCall_8_0_1_0_0_0_0; }
 		
-		//region+=StatemachineNamedRegion+
+		//( region+=StatemachineNamedRegion )+
 		public Assignment getRegionAssignment_8_0_1_0_0_1() { return cRegionAssignment_8_0_1_0_0_1; }
 		
 		//StatemachineNamedRegion
 		public RuleCall getRegionStatemachineNamedRegionParserRuleCall_8_0_1_0_0_1_0() { return cRegionStatemachineNamedRegionParserRuleCall_8_0_1_0_0_1_0; }
 		
-		//('@moe:' moe=moeCompositeStateRoutines)?
+		//( '@moe:' moe=moeCompositeStateRoutines )?
 		public Group getGroup_8_0_1_0_1() { return cGroup_8_0_1_0_1; }
 		
 		//'@moe:'
@@ -6841,34 +8598,37 @@
 		//moeCompositeStateRoutines
 		public RuleCall getMoeMoeCompositeStateRoutinesParserRuleCall_8_0_1_0_1_1_0() { return cMoeMoeCompositeStateRoutinesParserRuleCall_8_0_1_0_1_1_0; }
 		
-		//'@transition:' transition+=Transition*
+		//'@transition:' ( transition+=Transition )*
 		public Group getGroup_8_0_1_0_2() { return cGroup_8_0_1_0_2; }
 		
 		//'@transition:'
 		public Keyword getTransitionKeyword_8_0_1_0_2_0() { return cTransitionKeyword_8_0_1_0_2_0; }
 		
-		//transition+=Transition*
+		//( transition+=Transition )*
 		public Assignment getTransitionAssignment_8_0_1_0_2_1() { return cTransitionAssignment_8_0_1_0_2_1; }
 		
 		//Transition
 		public RuleCall getTransitionTransitionParserRuleCall_8_0_1_0_2_1_0() { return cTransitionTransitionParserRuleCall_8_0_1_0_2_1_0; }
 		
-		//region+=StatemachineRegionLite* & moe=moeCompositeStateRoutines? & transition+=Transition*
+		//( ( region+=StatemachineRegionLite )*
+		//             & ( moe=moeCompositeStateRoutines  )?
+		//             & ( transition+=Transition )*
+		//             )
 		public UnorderedGroup getUnorderedGroup_8_0_1_1() { return cUnorderedGroup_8_0_1_1; }
 		
-		//region+=StatemachineRegionLite*
+		//( region+=StatemachineRegionLite )*
 		public Assignment getRegionAssignment_8_0_1_1_0() { return cRegionAssignment_8_0_1_1_0; }
 		
 		//StatemachineRegionLite
 		public RuleCall getRegionStatemachineRegionLiteParserRuleCall_8_0_1_1_0_0() { return cRegionStatemachineRegionLiteParserRuleCall_8_0_1_1_0_0; }
 		
-		//moe=moeCompositeStateRoutines?
+		//( moe=moeCompositeStateRoutines  )?
 		public Assignment getMoeAssignment_8_0_1_1_1() { return cMoeAssignment_8_0_1_1_1; }
 		
 		//moeCompositeStateRoutines
 		public RuleCall getMoeMoeCompositeStateRoutinesParserRuleCall_8_0_1_1_1_0() { return cMoeMoeCompositeStateRoutinesParserRuleCall_8_0_1_1_1_0; }
 		
-		//transition+=Transition*
+		//( transition+=Transition )*
 		public Assignment getTransitionAssignment_8_0_1_1_2() { return cTransitionAssignment_8_0_1_1_2; }
 		
 		//Transition
@@ -6924,34 +8684,50 @@
 		private final Assignment cRunRoutineAssignment_1_8_1 = (Assignment)cGroup_1_8.eContents().get(1);
 		private final RuleCall cRunRoutineMoeRoutineParserRuleCall_1_8_1_0 = (RuleCall)cRunRoutineAssignment_1_8_1.eContents().get(0);
 		
-		//moeCompositeStateRoutines fmlInfra::ModelOfExecution:
-		//	{fmlInfra::ModelOfExecution} (('@create' createRoutine=moeRoutine)?
-		//	& ('@init' initRoutine=moeRoutine)?
-		//	& ('@final' finalRoutine=moeRoutine)?
-		//	& ('@enable' enableRoutine=moeRoutine)?
-		//	& ('@disable' disableRoutine=moeRoutine)?
-		//	& ('@concurrency' concurrencyRoutine=moeRoutine)?
-		//	& (('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
-		//	& ('@irun' irunRoutine=moeRoutine)?
-		//	& ('@run' runRoutine=moeRoutine)?);
+		//moeCompositeStateRoutines returns fmlInfra::ModelOfExecution
+		//    : { fmlInfra::ModelOfExecution }
+		//    ( ( '@create' createRoutine=moeRoutine )?
+		//    & ( '@init'   initRoutine=moeRoutine   )?
+		//    & ( '@final'  finalRoutine=moeRoutine  )?
+		//    & ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@concurrency' concurrencyRoutine=moeRoutine )?
+		//    & ( ( '@schedule' | '@xschedule' ) scheduleRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		//    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfExecution} (('@create' createRoutine=moeRoutine)? & ('@init' initRoutine=moeRoutine)? & ('@final'
-		//finalRoutine=moeRoutine)? & ('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)? &
-		//('@concurrency' concurrencyRoutine=moeRoutine)? & (('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)? & ('@irun'
-		//irunRoutine=moeRoutine)? & ('@run' runRoutine=moeRoutine)?)
+		//{ fmlInfra::ModelOfExecution }
+		//   ( ( '@create' createRoutine=moeRoutine )?
+		//   & ( '@init'   initRoutine=moeRoutine   )?
+		//   & ( '@final'  finalRoutine=moeRoutine  )?
+		//   & ( '@enable'  enableRoutine=moeRoutine  )?
+		//   & ( '@disable' disableRoutine=moeRoutine )?
+		//   & ( '@concurrency' concurrencyRoutine=moeRoutine )?
+		//   & ( ( '@schedule' | '@xschedule' ) scheduleRoutine=moeRoutine )?
+		//   & ( '@irun' irunRoutine=moeRoutine )?
+		//   & ( '@run'  runRoutine=moeRoutine  )?
+		//   )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfExecution}
+		//{ fmlInfra::ModelOfExecution }
 		public Action getModelOfExecutionAction_0() { return cModelOfExecutionAction_0; }
 		
-		//(('@create' createRoutine=moeRoutine)? & ('@init' initRoutine=moeRoutine)? & ('@final' finalRoutine=moeRoutine)? &
-		//('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)? & ('@concurrency'
-		//concurrencyRoutine=moeRoutine)? & (('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)? & ('@irun'
-		//irunRoutine=moeRoutine)? & ('@run' runRoutine=moeRoutine)?)
+		//( ( '@create' createRoutine=moeRoutine )?
+		//& ( '@init'   initRoutine=moeRoutine   )?
+		//& ( '@final'  finalRoutine=moeRoutine  )?
+		//& ( '@enable'  enableRoutine=moeRoutine  )?
+		//& ( '@disable' disableRoutine=moeRoutine )?
+		//& ( '@concurrency' concurrencyRoutine=moeRoutine )?
+		//& ( ( '@schedule' | '@xschedule' ) scheduleRoutine=moeRoutine )?
+		//& ( '@irun' irunRoutine=moeRoutine )?
+		//& ( '@run'  runRoutine=moeRoutine  )?
+		//)
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//('@create' createRoutine=moeRoutine)?
+		//( '@create' createRoutine=moeRoutine )?
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'@create'
@@ -6963,7 +8739,7 @@
 		//moeRoutine
 		public RuleCall getCreateRoutineMoeRoutineParserRuleCall_1_0_1_0() { return cCreateRoutineMoeRoutineParserRuleCall_1_0_1_0; }
 		
-		//('@init' initRoutine=moeRoutine)?
+		//( '@init'   initRoutine=moeRoutine   )?
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'@init'
@@ -6975,7 +8751,7 @@
 		//moeRoutine
 		public RuleCall getInitRoutineMoeRoutineParserRuleCall_1_1_1_0() { return cInitRoutineMoeRoutineParserRuleCall_1_1_1_0; }
 		
-		//('@final' finalRoutine=moeRoutine)?
+		//( '@final'  finalRoutine=moeRoutine  )?
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//'@final'
@@ -6987,7 +8763,7 @@
 		//moeRoutine
 		public RuleCall getFinalRoutineMoeRoutineParserRuleCall_1_2_1_0() { return cFinalRoutineMoeRoutineParserRuleCall_1_2_1_0; }
 		
-		//('@enable' enableRoutine=moeRoutine)?
+		//( '@enable'  enableRoutine=moeRoutine  )?
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//'@enable'
@@ -6999,7 +8775,7 @@
 		//moeRoutine
 		public RuleCall getEnableRoutineMoeRoutineParserRuleCall_1_3_1_0() { return cEnableRoutineMoeRoutineParserRuleCall_1_3_1_0; }
 		
-		//('@disable' disableRoutine=moeRoutine)?
+		//( '@disable' disableRoutine=moeRoutine )?
 		public Group getGroup_1_4() { return cGroup_1_4; }
 		
 		//'@disable'
@@ -7011,7 +8787,7 @@
 		//moeRoutine
 		public RuleCall getDisableRoutineMoeRoutineParserRuleCall_1_4_1_0() { return cDisableRoutineMoeRoutineParserRuleCall_1_4_1_0; }
 		
-		//('@concurrency' concurrencyRoutine=moeRoutine)?
+		//( '@concurrency' concurrencyRoutine=moeRoutine )?
 		public Group getGroup_1_5() { return cGroup_1_5; }
 		
 		//'@concurrency'
@@ -7023,10 +8799,10 @@
 		//moeRoutine
 		public RuleCall getConcurrencyRoutineMoeRoutineParserRuleCall_1_5_1_0() { return cConcurrencyRoutineMoeRoutineParserRuleCall_1_5_1_0; }
 		
-		//(('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
+		//( ( '@schedule' | '@xschedule' ) scheduleRoutine=moeRoutine )?
 		public Group getGroup_1_6() { return cGroup_1_6; }
 		
-		//('@schedule' | '@xschedule')
+		//( '@schedule' | '@xschedule' )
 		public Alternatives getAlternatives_1_6_0() { return cAlternatives_1_6_0; }
 		
 		//'@schedule'
@@ -7041,7 +8817,7 @@
 		//moeRoutine
 		public RuleCall getScheduleRoutineMoeRoutineParserRuleCall_1_6_1_0() { return cScheduleRoutineMoeRoutineParserRuleCall_1_6_1_0; }
 		
-		//('@irun' irunRoutine=moeRoutine)?
+		//( '@irun' irunRoutine=moeRoutine )?
 		public Group getGroup_1_7() { return cGroup_1_7; }
 		
 		//'@irun'
@@ -7053,7 +8829,7 @@
 		//moeRoutine
 		public RuleCall getIrunRoutineMoeRoutineParserRuleCall_1_7_1_0() { return cIrunRoutineMoeRoutineParserRuleCall_1_7_1_0; }
 		
-		//('@run' runRoutine=moeRoutine)?
+		//( '@run'  runRoutine=moeRoutine  )?
 		public Group getGroup_1_8() { return cGroup_1_8; }
 		
 		//'@run'
@@ -7094,19 +8870,45 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// SimpleState Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//SimpleState fmlStmchn::State:
-		//	{fmlStmchn::State} simple?='state' ('<' 'moc:'? 'simple' '>')?
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('{' (transition+=Transition*
-		//	& moe=moeSimpleStateRoutines?)
-		//	'}'
-		//	| ';');
+		//SimpleState returns fmlStmchn::State
+		//    : { fmlStmchn::State }
+		//    simple?='state' ( '<' ( 'moc:' )? 'simple' '>' )?
+		//    name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//    ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeSimpleStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeSimpleStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
+		//    | ';'
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::State} simple?='state' ('<' 'moc:'? 'simple' '>')? name=ESIdentifier unrestrictedName=UnrestrictedName? ('{'
-		//(transition+=Transition* & moe=moeSimpleStateRoutines?) '}' | ';')
+		// { fmlStmchn::State }
+		//    simple?='state' ( '<' ( 'moc:' )? 'simple' '>' )?
+		//    name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//    ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeSimpleStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeSimpleStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
+		//    | ';'
+		//    )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::State}
+		//{ fmlStmchn::State }
 		public Action getStateAction_0() { return cStateAction_0; }
 		
 		//simple?='state'
@@ -7115,13 +8917,13 @@
 		//'state'
 		public Keyword getSimpleStateKeyword_1_0() { return cSimpleStateKeyword_1_0; }
 		
-		//('<' 'moc:'? 'simple' '>')?
+		//( '<' ( 'moc:' )? 'simple' '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_2_1() { return cMocKeyword_2_1; }
 		
 		//'simple'
@@ -7136,31 +8938,61 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//('{' (transition+=Transition* & moe=moeSimpleStateRoutines?) '}' | ';')
+		//    ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeSimpleStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeSimpleStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
+		//    | ';'
+		//    )
 		public Alternatives getAlternatives_5() { return cAlternatives_5; }
 		
-		//'{' (transition+=Transition* & moe=moeSimpleStateRoutines?) '}'
+		// '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeSimpleStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeSimpleStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
 		public Group getGroup_5_0() { return cGroup_5_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_5_0_0() { return cLeftCurlyBracketKeyword_5_0_0; }
 		
-		//(transition+=Transition* & moe=moeSimpleStateRoutines?)
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeSimpleStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeSimpleStateRoutines  )?
+		////            )
+		//        )
 		public UnorderedGroup getUnorderedGroup_5_0_1() { return cUnorderedGroup_5_0_1; }
 		
-		//transition+=Transition*
+		//( transition+=Transition    )*
 		public Assignment getTransitionAssignment_5_0_1_0() { return cTransitionAssignment_5_0_1_0; }
 		
 		//Transition
 		public RuleCall getTransitionTransitionParserRuleCall_5_0_1_0_0() { return cTransitionTransitionParserRuleCall_5_0_1_0_0; }
 		
-		//moe=moeSimpleStateRoutines?
+		//( moe=moeSimpleStateRoutines )?
 		public Assignment getMoeAssignment_5_0_1_1() { return cMoeAssignment_5_0_1_1; }
 		
 		//moeSimpleStateRoutines
@@ -7190,27 +9022,35 @@
 		private final Assignment cIrunRoutineAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
 		private final RuleCall cIrunRoutineMoeRoutineParserRuleCall_1_2_1_0 = (RuleCall)cIrunRoutineAssignment_1_2_1.eContents().get(0);
 		
-		//moeSimpleStateRoutines fmlInfra::ModelOfExecution:
-		//	{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)?
-		//	& ('@disable' disableRoutine=moeRoutine)?
-		//	& ('@irun' irunRoutine=moeRoutine)?
-		//	//	& ( '@run'  runRoutine=moeRoutine  )?
-		//);
+		//moeSimpleStateRoutines returns fmlInfra::ModelOfExecution
+		//    : { fmlInfra::ModelOfExecution }
+		//    ( ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		////    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)? & ('@irun'
-		//irunRoutine=moeRoutine)? //	& ( '@run'  runRoutine=moeRoutine  )?
-		//)
+		// { fmlInfra::ModelOfExecution }
+		//    ( ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		////    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfExecution}
+		//{ fmlInfra::ModelOfExecution }
 		public Action getModelOfExecutionAction_0() { return cModelOfExecutionAction_0; }
 		
-		//(('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)? & ('@irun' irunRoutine=moeRoutine)? //	& ( '@run'  runRoutine=moeRoutine  )?
-		//)
+		//    ( ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		////    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//('@enable' enableRoutine=moeRoutine)?
+		//( '@enable'  enableRoutine=moeRoutine  )?
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'@enable'
@@ -7222,7 +9062,7 @@
 		//moeRoutine
 		public RuleCall getEnableRoutineMoeRoutineParserRuleCall_1_0_1_0() { return cEnableRoutineMoeRoutineParserRuleCall_1_0_1_0; }
 		
-		//('@disable' disableRoutine=moeRoutine)?
+		//( '@disable' disableRoutine=moeRoutine )?
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'@disable'
@@ -7234,7 +9074,7 @@
 		//moeRoutine
 		public RuleCall getDisableRoutineMoeRoutineParserRuleCall_1_1_1_0() { return cDisableRoutineMoeRoutineParserRuleCall_1_1_1_0; }
 		
-		//('@irun' irunRoutine=moeRoutine)?
+		//( '@irun' irunRoutine=moeRoutine )?
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//'@irun'
@@ -7278,25 +9118,57 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// StartState Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//StartState fmlStmchn::StartState:
-		//	{fmlStmchn::StartState} (simple?='state' '<' 'moc:'? 'start' '>' name=ESIdentifier
-		//	| simple?='#start') unrestrictedName=UnrestrictedName? ('{' (transition+=Transition*
-		//	& moe=moeStartStateRoutines?)
-		//	'}'
-		//	| ';');
+		//StartState returns fmlStmchn::StartState
+		//    : { fmlStmchn::StartState }
+		//    ( simple?='state' '<' ( 'moc:' )? 'start' '>' name=ESIdentifier
+		//    | simple?='#start'
+		//    )
+		//    ( unrestrictedName=UnrestrictedName )?
+		//    ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeStartStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeStartStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
+		//    | ';'
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::StartState} (simple?='state' '<' 'moc:'? 'start' '>' name=ESIdentifier | simple?='#start')
-		//unrestrictedName=UnrestrictedName? ('{' (transition+=Transition* & moe=moeStartStateRoutines?) '}' | ';')
+		// { fmlStmchn::StartState }
+		//    ( simple?='state' '<' ( 'moc:' )? 'start' '>' name=ESIdentifier
+		//    | simple?='#start'
+		//    )
+		//    ( unrestrictedName=UnrestrictedName )?
+		//    ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeStartStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeStartStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
+		//    | ';'
+		//    )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::StartState}
+		//{ fmlStmchn::StartState }
 		public Action getStartStateAction_0() { return cStartStateAction_0; }
 		
-		//(simple?='state' '<' 'moc:'? 'start' '>' name=ESIdentifier | simple?='#start')
+		//( simple?='state' '<' ( 'moc:' )? 'start' '>' name=ESIdentifier
+		//| simple?='#start'
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//simple?='state' '<' 'moc:'? 'start' '>' name=ESIdentifier
+		//simple?='state' '<' ( 'moc:' )? 'start' '>' name=ESIdentifier
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//simple?='state'
@@ -7308,7 +9180,7 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_1_0_1() { return cLessThanSignKeyword_1_0_1; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_1_0_2() { return cMocKeyword_1_0_2; }
 		
 		//'start'
@@ -7329,31 +9201,61 @@
 		//'#start'
 		public Keyword getSimpleStartKeyword_1_1_0() { return cSimpleStartKeyword_1_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_2_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_2_0; }
 		
-		//('{' (transition+=Transition* & moe=moeStartStateRoutines?) '}' | ';')
+		//    ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeStartStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeStartStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
+		//    | ';'
+		//    )
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//'{' (transition+=Transition* & moe=moeStartStateRoutines?) '}'
+		// '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeStartStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeStartStateRoutines  )?
+		////            )
+		//        )
+		//      '}'
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_0_0() { return cLeftCurlyBracketKeyword_3_0_0; }
 		
-		//(transition+=Transition* & moe=moeStartStateRoutines?)
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moeStartStateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moeStartStateRoutines  )?
+		////            )
+		//        )
 		public UnorderedGroup getUnorderedGroup_3_0_1() { return cUnorderedGroup_3_0_1; }
 		
-		//transition+=Transition*
+		//( transition+=Transition    )*
 		public Assignment getTransitionAssignment_3_0_1_0() { return cTransitionAssignment_3_0_1_0; }
 		
 		//Transition
 		public RuleCall getTransitionTransitionParserRuleCall_3_0_1_0_0() { return cTransitionTransitionParserRuleCall_3_0_1_0_0; }
 		
-		//moe=moeStartStateRoutines?
+		//( moe=moeStartStateRoutines )?
 		public Assignment getMoeAssignment_3_0_1_1() { return cMoeAssignment_3_0_1_1; }
 		
 		//moeStartStateRoutines
@@ -7395,32 +9297,44 @@
 		private final Assignment cIrunRoutineAssignment_1_5_1 = (Assignment)cGroup_1_5.eContents().get(1);
 		private final RuleCall cIrunRoutineMoeRoutineParserRuleCall_1_5_1_0 = (RuleCall)cIrunRoutineAssignment_1_5_1.eContents().get(0);
 		
-		//moeStartStateRoutines fmlInfra::ModelOfExecution:
-		//	{fmlInfra::ModelOfExecution} (('@create' createRoutine=moeRoutine)?
-		//	& ('@init' initRoutine=moeRoutine)?
-		//	& ('@final' finalRoutine=moeRoutine)?
-		//	& ('@enable' enableRoutine=moeRoutine)?
-		//	& ('@disable' disableRoutine=moeRoutine)?
-		//	& ('@irun' irunRoutine=moeRoutine)?
-		//	//	& ( '@run'  runRoutine=moeRoutine  )?
-		//);
+		//moeStartStateRoutines returns fmlInfra::ModelOfExecution
+		//    : { fmlInfra::ModelOfExecution }
+		//    ( ( '@create' createRoutine=moeRoutine )?
+		//    & ( '@init'   initRoutine=moeRoutine   )?
+		//    & ( '@final'  finalRoutine=moeRoutine  )?
+		//    & ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		////    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfExecution} (('@create' createRoutine=moeRoutine)? & ('@init' initRoutine=moeRoutine)? & ('@final'
-		//finalRoutine=moeRoutine)? & ('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)? & ('@irun'
-		//irunRoutine=moeRoutine)? //	& ( '@run'  runRoutine=moeRoutine  )?
-		//)
+		// { fmlInfra::ModelOfExecution }
+		//    ( ( '@create' createRoutine=moeRoutine )?
+		//    & ( '@init'   initRoutine=moeRoutine   )?
+		//    & ( '@final'  finalRoutine=moeRoutine  )?
+		//    & ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		////    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfExecution}
+		//{ fmlInfra::ModelOfExecution }
 		public Action getModelOfExecutionAction_0() { return cModelOfExecutionAction_0; }
 		
-		//(('@create' createRoutine=moeRoutine)? & ('@init' initRoutine=moeRoutine)? & ('@final' finalRoutine=moeRoutine)? &
-		//('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)? & ('@irun' irunRoutine=moeRoutine)? //	& ( '@run'  runRoutine=moeRoutine  )?
-		//)
+		//    ( ( '@create' createRoutine=moeRoutine )?
+		//    & ( '@init'   initRoutine=moeRoutine   )?
+		//    & ( '@final'  finalRoutine=moeRoutine  )?
+		//    & ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		////    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//('@create' createRoutine=moeRoutine)?
+		//( '@create' createRoutine=moeRoutine )?
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'@create'
@@ -7432,7 +9346,7 @@
 		//moeRoutine
 		public RuleCall getCreateRoutineMoeRoutineParserRuleCall_1_0_1_0() { return cCreateRoutineMoeRoutineParserRuleCall_1_0_1_0; }
 		
-		//('@init' initRoutine=moeRoutine)?
+		//( '@init'   initRoutine=moeRoutine   )?
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'@init'
@@ -7444,7 +9358,7 @@
 		//moeRoutine
 		public RuleCall getInitRoutineMoeRoutineParserRuleCall_1_1_1_0() { return cInitRoutineMoeRoutineParserRuleCall_1_1_1_0; }
 		
-		//('@final' finalRoutine=moeRoutine)?
+		//( '@final'  finalRoutine=moeRoutine  )?
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//'@final'
@@ -7456,7 +9370,7 @@
 		//moeRoutine
 		public RuleCall getFinalRoutineMoeRoutineParserRuleCall_1_2_1_0() { return cFinalRoutineMoeRoutineParserRuleCall_1_2_1_0; }
 		
-		//('@enable' enableRoutine=moeRoutine)?
+		//( '@enable'  enableRoutine=moeRoutine  )?
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//'@enable'
@@ -7468,7 +9382,7 @@
 		//moeRoutine
 		public RuleCall getEnableRoutineMoeRoutineParserRuleCall_1_3_1_0() { return cEnableRoutineMoeRoutineParserRuleCall_1_3_1_0; }
 		
-		//('@disable' disableRoutine=moeRoutine)?
+		//( '@disable' disableRoutine=moeRoutine )?
 		public Group getGroup_1_4() { return cGroup_1_4; }
 		
 		//'@disable'
@@ -7480,7 +9394,7 @@
 		//moeRoutine
 		public RuleCall getDisableRoutineMoeRoutineParserRuleCall_1_4_1_0() { return cDisableRoutineMoeRoutineParserRuleCall_1_4_1_0; }
 		
-		//('@irun' irunRoutine=moeRoutine)?
+		//( '@irun' irunRoutine=moeRoutine )?
 		public Group getGroup_1_5() { return cGroup_1_5; }
 		
 		//'@irun'
@@ -7523,24 +9437,41 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// FinalState Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//FinalState fmlStmchn::FinalState:
-		//	{fmlStmchn::FinalState} (simple?='state' '<' 'moc:'? 'final' '>' name=ESIdentifier
-		//	| simple?='#final') unrestrictedName=UnrestrictedName? ('{' ('@moe:'? moe=moeFinalStateRoutines)?
-		//	'}'
-		//	| ';');
+		//FinalState returns fmlStmchn::FinalState
+		//    : { fmlStmchn::FinalState }
+		//    ( simple?='state' '<' ( 'moc:' )? 'final' '>' name=ESIdentifier
+		//    | simple?='#final'
+		//    )
+		//    ( unrestrictedName=UnrestrictedName )?
+		//    ( '{'
+		//        ( ( '@moe:' )?  moe=moeFinalStateRoutines )?
+		//      '}'
+		//    | ';'
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::FinalState} (simple?='state' '<' 'moc:'? 'final' '>' name=ESIdentifier | simple?='#final')
-		//unrestrictedName=UnrestrictedName? ('{' ('@moe:'? moe=moeFinalStateRoutines)? '}' | ';')
+		//{ fmlStmchn::FinalState }
+		//   ( simple?='state' '<' ( 'moc:' )? 'final' '>' name=ESIdentifier
+		//   | simple?='#final'
+		//   )
+		//   ( unrestrictedName=UnrestrictedName )?
+		//   ( '{'
+		//       ( ( '@moe:' )?  moe=moeFinalStateRoutines )?
+		//     '}'
+		//   | ';'
+		//   )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::FinalState}
+		//{ fmlStmchn::FinalState }
 		public Action getFinalStateAction_0() { return cFinalStateAction_0; }
 		
-		//(simple?='state' '<' 'moc:'? 'final' '>' name=ESIdentifier | simple?='#final')
+		//( simple?='state' '<' ( 'moc:' )? 'final' '>' name=ESIdentifier
+		//| simple?='#final'
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//simple?='state' '<' 'moc:'? 'final' '>' name=ESIdentifier
+		//simple?='state' '<' ( 'moc:' )? 'final' '>' name=ESIdentifier
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//simple?='state'
@@ -7552,7 +9483,7 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_1_0_1() { return cLessThanSignKeyword_1_0_1; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_1_0_2() { return cMocKeyword_1_0_2; }
 		
 		//'final'
@@ -7573,25 +9504,31 @@
 		//'#final'
 		public Keyword getSimpleFinalKeyword_1_1_0() { return cSimpleFinalKeyword_1_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_2_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_2_0; }
 		
-		//('{' ('@moe:'? moe=moeFinalStateRoutines)? '}' | ';')
+		//( '{'
+		//    ( ( '@moe:' )?  moe=moeFinalStateRoutines )?
+		//  '}'
+		//| ';'
+		//)
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//'{' ('@moe:'? moe=moeFinalStateRoutines)? '}'
+		//'{'
+		//       ( ( '@moe:' )?  moe=moeFinalStateRoutines )?
+		//     '}'
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_0_0() { return cLeftCurlyBracketKeyword_3_0_0; }
 		
-		//('@moe:'? moe=moeFinalStateRoutines)?
+		//( ( '@moe:' )?  moe=moeFinalStateRoutines )?
 		public Group getGroup_3_0_1() { return cGroup_3_0_1; }
 		
-		//'@moe:'?
+		//( '@moe:' )?
 		public Keyword getMoeKeyword_3_0_1_0() { return cMoeKeyword_3_0_1_0; }
 		
 		//moe=moeFinalStateRoutines
@@ -7620,25 +9557,32 @@
 		private final Assignment cFinalRoutineAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
 		private final RuleCall cFinalRoutineMoeRoutineParserRuleCall_1_1_1_0 = (RuleCall)cFinalRoutineAssignment_1_1_1.eContents().get(0);
 		
-		//moeFinalStateRoutines fmlInfra::ModelOfExecution:
-		//	{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)?
-		//	& ('@final' finalRoutine=moeRoutine)?
-		//	//	& ( '@run'     runRoutine=moeRoutine    )?
-		//);
+		//moeFinalStateRoutines returns fmlInfra::ModelOfExecution
+		//    : { fmlInfra::ModelOfExecution }
+		//    ( ( '@enable'  enableRoutine=moeRoutine )?
+		//    & ( '@final'   finalRoutine=moeRoutine  )?
+		////    & ( '@run'     runRoutine=moeRoutine    )?
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)? & ('@final' finalRoutine=moeRoutine)? //	& ( '@run'     runRoutine=moeRoutine    )?
-		//)
+		// { fmlInfra::ModelOfExecution }
+		//    ( ( '@enable'  enableRoutine=moeRoutine )?
+		//    & ( '@final'   finalRoutine=moeRoutine  )?
+		////    & ( '@run'     runRoutine=moeRoutine    )?
+		//    )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfExecution}
+		//{ fmlInfra::ModelOfExecution }
 		public Action getModelOfExecutionAction_0() { return cModelOfExecutionAction_0; }
 		
-		//(('@enable' enableRoutine=moeRoutine)? & ('@final' finalRoutine=moeRoutine)? //	& ( '@run'     runRoutine=moeRoutine    )?
-		//)
+		//    ( ( '@enable'  enableRoutine=moeRoutine )?
+		//    & ( '@final'   finalRoutine=moeRoutine  )?
+		////    & ( '@run'     runRoutine=moeRoutine    )?
+		//    )
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//('@enable' enableRoutine=moeRoutine)?
+		//( '@enable'  enableRoutine=moeRoutine )?
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'@enable'
@@ -7650,7 +9594,7 @@
 		//moeRoutine
 		public RuleCall getEnableRoutineMoeRoutineParserRuleCall_1_0_1_0() { return cEnableRoutineMoeRoutineParserRuleCall_1_0_1_0; }
 		
-		//('@final' finalRoutine=moeRoutine)?
+		//( '@final'   finalRoutine=moeRoutine  )?
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'@final'
@@ -7672,13 +9616,16 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Pseudostate Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Pseudostate fmlStmchn::Pseudostate:
-		//	PseudostateInitial
-		//	| EndingPseudostate
-		//	| OtherPseudostate;
+		//Pseudostate returns fmlStmchn::Pseudostate
+		//    : PseudostateInitial
+		//    | EndingPseudostate
+		//    | OtherPseudostate
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//PseudostateInitial | EndingPseudostate | OtherPseudostate
+		//PseudostateInitial
+		//   | EndingPseudostate
+		//   | OtherPseudostate
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//PseudostateInitial
@@ -7717,23 +9664,59 @@
 		private final Keyword cRightCurlyBracketKeyword_8_0_2 = (Keyword)cGroup_8_0.eContents().get(2);
 		private final Keyword cSemicolonKeyword_8_1 = (Keyword)cAlternatives_8.eContents().get(1);
 		
-		//OtherPseudostate fmlStmchn::Pseudostate:
-		//	{fmlStmchn::Pseudostate} ('state' | 'pseudostate') '<' 'moc:'? kind=PseudostateKind '>'
-		//	name=ESIdentifier
-		//	unrestrictedName=UnrestrictedName? ('{' (transition+=Transition*
-		//	& moe=moePseudotateRoutines?)
-		//	'}'
-		//	| ';');
+		//OtherPseudostate returns fmlStmchn::Pseudostate
+		//    : { fmlStmchn::Pseudostate }
+		//        ( 'state' | 'pseudostate' ) '<' ( 'moc:' )? kind=PseudostateKind '>'
+		//        name=ESIdentifier
+		//        ( unrestrictedName=UnrestrictedName )?
+		//        ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moePseudotateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moePseudotateRoutines  )?
+		////            )
+		//        )
+		//          '}'
+		//        | ';'
+		//        )
+		////    | PseudostateInitial
+		////    | PseudostateTerminal
+		////    | PseudostateReturn
+		////    | PseudostateJunction
+		////    | PseudostateChoice
+		////    | PseudostateFork
+		////    | PseudostateJoin
+		////    | PseudostateDeepHistory
+		////    | PseudostateShallowHistory
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::Pseudostate} ('state' | 'pseudostate') '<' 'moc:'? kind=PseudostateKind '>' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('{' (transition+=Transition* & moe=moePseudotateRoutines?) '}' | ';')
+		// { fmlStmchn::Pseudostate }
+		//        ( 'state' | 'pseudostate' ) '<' ( 'moc:' )? kind=PseudostateKind '>'
+		//        name=ESIdentifier
+		//        ( unrestrictedName=UnrestrictedName )?
+		//        ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moePseudotateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moePseudotateRoutines  )?
+		////            )
+		//        )
+		//          '}'
+		//        | ';'
+		//        )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::Pseudostate}
+		//{ fmlStmchn::Pseudostate }
 		public Action getPseudostateAction_0() { return cPseudostateAction_0; }
 		
-		//('state' | 'pseudostate')
+		//( 'state' | 'pseudostate' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'state'
@@ -7745,7 +9728,7 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_2() { return cLessThanSignKeyword_2; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_3() { return cMocKeyword_3; }
 		
 		//kind=PseudostateKind
@@ -7763,31 +9746,61 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_6_0() { return cNameESIdentifierParserRuleCall_6_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_7() { return cUnrestrictedNameAssignment_7; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_7_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_7_0; }
 		
-		//('{' (transition+=Transition* & moe=moePseudotateRoutines?) '}' | ';')
+		//        ( '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moePseudotateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moePseudotateRoutines  )?
+		////            )
+		//        )
+		//          '}'
+		//        | ';'
+		//        )
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
-		//'{' (transition+=Transition* & moe=moePseudotateRoutines?) '}'
+		// '{'
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moePseudotateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moePseudotateRoutines  )?
+		////            )
+		//        )
+		//          '}'
 		public Group getGroup_8_0() { return cGroup_8_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_8_0_0() { return cLeftCurlyBracketKeyword_8_0_0; }
 		
-		//(transition+=Transition* & moe=moePseudotateRoutines?)
+		//        (
+		//            ( ( transition+=Transition    )*
+		//            & ( moe=moePseudotateRoutines )?
+		//            )
+		////        |
+		////            ( ( '@transition:'  ( transition+=Transition )* )?
+		////            & ( '@moe:'         moe=moePseudotateRoutines  )?
+		////            )
+		//        )
 		public UnorderedGroup getUnorderedGroup_8_0_1() { return cUnorderedGroup_8_0_1; }
 		
-		//transition+=Transition*
+		//( transition+=Transition    )*
 		public Assignment getTransitionAssignment_8_0_1_0() { return cTransitionAssignment_8_0_1_0; }
 		
 		//Transition
 		public RuleCall getTransitionTransitionParserRuleCall_8_0_1_0_0() { return cTransitionTransitionParserRuleCall_8_0_1_0_0; }
 		
-		//moe=moePseudotateRoutines?
+		//( moe=moePseudotateRoutines )?
 		public Assignment getMoeAssignment_8_0_1_1() { return cMoeAssignment_8_0_1_1; }
 		
 		//moePseudotateRoutines
@@ -7813,21 +9826,29 @@
 		private final Assignment cDisableRoutineAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
 		private final RuleCall cDisableRoutineMoeRoutineParserRuleCall_1_1_1_0 = (RuleCall)cDisableRoutineAssignment_1_1_1.eContents().get(0);
 		
-		//moePseudotateRoutines fmlInfra::ModelOfExecution:
-		//	{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)?
-		//	& ('@disable' disableRoutine=moeRoutine)?);
+		//moePseudotateRoutines returns fmlInfra::ModelOfExecution
+		//    : { fmlInfra::ModelOfExecution }
+		//    ( ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)?)
+		//{ fmlInfra::ModelOfExecution }
+		//   ( ( '@enable'  enableRoutine=moeRoutine  )?
+		//   & ( '@disable' disableRoutine=moeRoutine )?
+		//   )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfExecution}
+		//{ fmlInfra::ModelOfExecution }
 		public Action getModelOfExecutionAction_0() { return cModelOfExecutionAction_0; }
 		
-		//(('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)?)
+		//( ( '@enable'  enableRoutine=moeRoutine  )?
+		//& ( '@disable' disableRoutine=moeRoutine )?
+		//)
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//('@enable' enableRoutine=moeRoutine)?
+		//( '@enable'  enableRoutine=moeRoutine  )?
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'@enable'
@@ -7839,7 +9860,7 @@
 		//moeRoutine
 		public RuleCall getEnableRoutineMoeRoutineParserRuleCall_1_0_1_0() { return cEnableRoutineMoeRoutineParserRuleCall_1_0_1_0; }
 		
-		//('@disable' disableRoutine=moeRoutine)?
+		//( '@disable' disableRoutine=moeRoutine )?
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'@disable'
@@ -7886,30 +9907,48 @@
 		private final Keyword cRightCurlyBracketKeyword_3_0_2 = (Keyword)cGroup_3_0.eContents().get(2);
 		private final Keyword cSemicolonKeyword_3_1 = (Keyword)cAlternatives_3.eContents().get(1);
 		
-		//PseudostateInitial fmlStmchn::Pseudostate:
-		//	{fmlStmchn::Pseudostate} (('state' | 'pseudostate')
-		//	'<' 'moc:'? kind=PseudostateInitialKind '>'
-		//	name=(ESIdentifier | '#initial' | '#init') | name=('#initial' | '#init')) unrestrictedName=UnrestrictedName? ('{'
-		//	('@transition:'? transition+=Transition*)? '}'
-		//	| ';');
+		//PseudostateInitial returns fmlStmchn::Pseudostate
+		//    : { fmlStmchn::Pseudostate }
+		//    ( ( 'state' | 'pseudostate' )
+		//        '<' ( 'moc:' )? kind=PseudostateInitialKind '>'
+		//        name=(ESIdentifier | '#initial' | '#init' )
+		//    | name=( '#initial' | '#init' )
+		//    )
+		//    ( unrestrictedName=UnrestrictedName )?
+		//    ( '{'  ( ( '@transition:' )?  ( transition+=Transition )* )?  '}'
+		//    | ';'
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::Pseudostate} (('state' | 'pseudostate') '<' 'moc:'? kind=PseudostateInitialKind '>' name=(ESIdentifier |
-		//'#initial' | '#init') | name=('#initial' | '#init')) unrestrictedName=UnrestrictedName? ('{' ('@transition:'?
-		//transition+=Transition*)? '}' | ';')
+		//{ fmlStmchn::Pseudostate }
+		//   ( ( 'state' | 'pseudostate' )
+		//       '<' ( 'moc:' )? kind=PseudostateInitialKind '>'
+		//       name=(ESIdentifier | '#initial' | '#init' )
+		//   | name=( '#initial' | '#init' )
+		//   )
+		//   ( unrestrictedName=UnrestrictedName )?
+		//   ( '{'  ( ( '@transition:' )?  ( transition+=Transition )* )?  '}'
+		//   | ';'
+		//   )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::Pseudostate}
+		//{ fmlStmchn::Pseudostate }
 		public Action getPseudostateAction_0() { return cPseudostateAction_0; }
 		
-		//(('state' | 'pseudostate') '<' 'moc:'? kind=PseudostateInitialKind '>' name=(ESIdentifier | '#initial' | '#init') |
-		//name=('#initial' | '#init'))
+		//( ( 'state' | 'pseudostate' )
+		//    '<' ( 'moc:' )? kind=PseudostateInitialKind '>'
+		//    name=(ESIdentifier | '#initial' | '#init' )
+		//| name=( '#initial' | '#init' )
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//('state' | 'pseudostate') '<' 'moc:'? kind=PseudostateInitialKind '>' name=(ESIdentifier | '#initial' | '#init')
+		//( 'state' | 'pseudostate' )
+		//       '<' ( 'moc:' )? kind=PseudostateInitialKind '>'
+		//       name=(ESIdentifier | '#initial' | '#init' )
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
-		//('state' | 'pseudostate')
+		//( 'state' | 'pseudostate' )
 		public Alternatives getAlternatives_1_0_0() { return cAlternatives_1_0_0; }
 		
 		//'state'
@@ -7921,7 +9960,7 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_1_0_1() { return cLessThanSignKeyword_1_0_1; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_1_0_2() { return cMocKeyword_1_0_2; }
 		
 		//kind=PseudostateInitialKind
@@ -7933,10 +9972,10 @@
 		//'>'
 		public Keyword getGreaterThanSignKeyword_1_0_4() { return cGreaterThanSignKeyword_1_0_4; }
 		
-		//name=(ESIdentifier | '#initial' | '#init')
+		//name=(ESIdentifier | '#initial' | '#init' )
 		public Assignment getNameAssignment_1_0_5() { return cNameAssignment_1_0_5; }
 		
-		//(ESIdentifier | '#initial' | '#init')
+		//(ESIdentifier | '#initial' | '#init' )
 		public Alternatives getNameAlternatives_1_0_5_0() { return cNameAlternatives_1_0_5_0; }
 		
 		//ESIdentifier
@@ -7948,10 +9987,10 @@
 		//'#init'
 		public Keyword getNameInitKeyword_1_0_5_0_2() { return cNameInitKeyword_1_0_5_0_2; }
 		
-		//name=('#initial' | '#init')
+		//name=( '#initial' | '#init' )
 		public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; }
 		
-		//('#initial' | '#init')
+		//( '#initial' | '#init' )
 		public Alternatives getNameAlternatives_1_1_0() { return cNameAlternatives_1_1_0; }
 		
 		//'#initial'
@@ -7960,28 +9999,30 @@
 		//'#init'
 		public Keyword getNameInitKeyword_1_1_0_1() { return cNameInitKeyword_1_1_0_1; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_2_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_2_0; }
 		
-		//('{' ('@transition:'? transition+=Transition*)? '}' | ';')
+		//( '{'  ( ( '@transition:' )?  ( transition+=Transition )* )?  '}'
+		//| ';'
+		//)
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//'{' ('@transition:'? transition+=Transition*)? '}'
+		//'{'  ( ( '@transition:' )?  ( transition+=Transition )* )?  '}'
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_0_0() { return cLeftCurlyBracketKeyword_3_0_0; }
 		
-		//('@transition:'? transition+=Transition*)?
+		//( ( '@transition:' )?  ( transition+=Transition )* )?
 		public Group getGroup_3_0_1() { return cGroup_3_0_1; }
 		
-		//'@transition:'?
+		//( '@transition:' )?
 		public Keyword getTransitionKeyword_3_0_1_0() { return cTransitionKeyword_3_0_1_0; }
 		
-		//transition+=Transition*
+		//( transition+=Transition )*
 		public Assignment getTransitionAssignment_3_0_1_1() { return cTransitionAssignment_3_0_1_1; }
 		
 		//Transition
@@ -8019,20 +10060,28 @@
 		private final Keyword cRightCurlyBracketKeyword_8_0_2 = (Keyword)cGroup_8_0.eContents().get(2);
 		private final Keyword cSemicolonKeyword_8_1 = (Keyword)cAlternatives_8.eContents().get(1);
 		
-		//EndingPseudostate fmlStmchn::Pseudostate:
-		//	{fmlStmchn::Pseudostate} ('state' | 'pseudostate') '<' 'moc:'? kind=EndingPseudostateKind '>'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('{' ('@moe:'? moe=moeFinalStateRoutines)? '}'
-		//	| ';');
+		//EndingPseudostate returns fmlStmchn::Pseudostate
+		//    : { fmlStmchn::Pseudostate }
+		//    ( 'state' | 'pseudostate' ) '<' ( 'moc:' )? kind=EndingPseudostateKind '>'
+		//    name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//    ( '{'  ( ( '@moe:' )?  moe=moeFinalStateRoutines )?  '}'
+		//    | ';'
+		//    )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::Pseudostate} ('state' | 'pseudostate') '<' 'moc:'? kind=EndingPseudostateKind '>' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('{' ('@moe:'? moe=moeFinalStateRoutines)? '}' | ';')
+		//{ fmlStmchn::Pseudostate }
+		//   ( 'state' | 'pseudostate' ) '<' ( 'moc:' )? kind=EndingPseudostateKind '>'
+		//   name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//   ( '{'  ( ( '@moe:' )?  moe=moeFinalStateRoutines )?  '}'
+		//   | ';'
+		//   )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlStmchn::Pseudostate}
+		//{ fmlStmchn::Pseudostate }
 		public Action getPseudostateAction_0() { return cPseudostateAction_0; }
 		
-		//('state' | 'pseudostate')
+		//( 'state' | 'pseudostate' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'state'
@@ -8044,7 +10093,7 @@
 		//'<'
 		public Keyword getLessThanSignKeyword_2() { return cLessThanSignKeyword_2; }
 		
-		//'moc:'?
+		//( 'moc:' )?
 		public Keyword getMocKeyword_3() { return cMocKeyword_3; }
 		
 		//kind=EndingPseudostateKind
@@ -8062,25 +10111,27 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_6_0() { return cNameESIdentifierParserRuleCall_6_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_7() { return cUnrestrictedNameAssignment_7; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_7_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_7_0; }
 		
-		//('{' ('@moe:'? moe=moeFinalStateRoutines)? '}' | ';')
+		//( '{'  ( ( '@moe:' )?  moe=moeFinalStateRoutines )?  '}'
+		//| ';'
+		//)
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
-		//'{' ('@moe:'? moe=moeFinalStateRoutines)? '}'
+		//'{'  ( ( '@moe:' )?  moe=moeFinalStateRoutines )?  '}'
 		public Group getGroup_8_0() { return cGroup_8_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_8_0_0() { return cLeftCurlyBracketKeyword_8_0_0; }
 		
-		//('@moe:'? moe=moeFinalStateRoutines)?
+		//( ( '@moe:' )?  moe=moeFinalStateRoutines )?
 		public Group getGroup_8_0_1() { return cGroup_8_0_1; }
 		
-		//'@moe:'?
+		//( '@moe:' )?
 		public Keyword getMoeKeyword_8_0_1_0() { return cMoeKeyword_8_0_1_0; }
 		
 		//moe=moeFinalStateRoutines
@@ -8102,11 +10153,12 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Section Model Of Computation Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//ModelOfComputation fmlInfra::ModelOfComputation:
-		//	{fmlInfra::ModelOfComputation};
+		//ModelOfComputation returns fmlInfra::ModelOfComputation
+		//    : { fmlInfra::ModelOfComputation }
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfComputation}
+		//{ fmlInfra::ModelOfComputation }
 		public Action getModelOfComputationAction() { return cModelOfComputationAction; }
 	}
 	public class ModelOfExecutionElements extends AbstractParserRuleElementFinder {
@@ -8161,45 +10213,65 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Section Model Of Execution Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//ModelOfExecution fmlInfra::ModelOfExecution:
-		//	{fmlInfra::ModelOfExecution}
-		//	'@moe:'
-		//	routine+=Routine* (('@create' createRoutine=moeRoutine)?
-		//	& ('@init' initRoutine=moeRoutine)?
-		//	& ('@final' finalRoutine=moeRoutine)?
-		//	& ('@enable' enableRoutine=moeRoutine)?
-		//	& ('@disable' disableRoutine=moeRoutine)?
-		//	& ('@concurrency' concurrencyRoutine=moeRoutine)?
-		//	& (('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
-		//	& ('@irun' irunRoutine=moeRoutine)?
-		//	& ('@run' runRoutine=moeRoutine)?) routine+=Routine*;
+		//ModelOfExecution returns fmlInfra::ModelOfExecution
+		//    : { fmlInfra::ModelOfExecution }
+		//    '@moe:'
+		//    ( routine+=Routine )*
+		//    ( ( '@create'  createRoutine=moeRoutine )?
+		//    & ( '@init'    initRoutine=moeRoutine   )?
+		//    & ( '@final'   finalRoutine=moeRoutine  )?
+		//    & ( '@enable'  enableRoutine=moeRoutine  )?
+		//    & ( '@disable' disableRoutine=moeRoutine )?
+		//    & ( '@concurrency' concurrencyRoutine=moeRoutine )?
+		//    & ( ( '@schedule' | '@xschedule' )    scheduleRoutine=moeRoutine )?
+		//    & ( '@irun' irunRoutine=moeRoutine )?
+		//    & ( '@run'  runRoutine=moeRoutine  )?
+		//    )
+		//    ( routine+=Routine )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfExecution} '@moe:' routine+=Routine* (('@create' createRoutine=moeRoutine)? & ('@init'
-		//initRoutine=moeRoutine)? & ('@final' finalRoutine=moeRoutine)? & ('@enable' enableRoutine=moeRoutine)? & ('@disable'
-		//disableRoutine=moeRoutine)? & ('@concurrency' concurrencyRoutine=moeRoutine)? & (('@schedule' | '@xschedule')
-		//scheduleRoutine=moeRoutine)? & ('@irun' irunRoutine=moeRoutine)? & ('@run' runRoutine=moeRoutine)?) routine+=Routine*
+		//{ fmlInfra::ModelOfExecution }
+		//   '@moe:'
+		//   ( routine+=Routine )*
+		//   ( ( '@create'  createRoutine=moeRoutine )?
+		//   & ( '@init'    initRoutine=moeRoutine   )?
+		//   & ( '@final'   finalRoutine=moeRoutine  )?
+		//   & ( '@enable'  enableRoutine=moeRoutine  )?
+		//   & ( '@disable' disableRoutine=moeRoutine )?
+		//   & ( '@concurrency' concurrencyRoutine=moeRoutine )?
+		//   & ( ( '@schedule' | '@xschedule' )    scheduleRoutine=moeRoutine )?
+		//   & ( '@irun' irunRoutine=moeRoutine )?
+		//   & ( '@run'  runRoutine=moeRoutine  )?
+		//   )
+		//   ( routine+=Routine )*
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfExecution}
+		//{ fmlInfra::ModelOfExecution }
 		public Action getModelOfExecutionAction_0() { return cModelOfExecutionAction_0; }
 		
 		//'@moe:'
 		public Keyword getMoeKeyword_1() { return cMoeKeyword_1; }
 		
-		//routine+=Routine*
+		//( routine+=Routine )*
 		public Assignment getRoutineAssignment_2() { return cRoutineAssignment_2; }
 		
 		//Routine
 		public RuleCall getRoutineRoutineParserRuleCall_2_0() { return cRoutineRoutineParserRuleCall_2_0; }
 		
-		//(('@create' createRoutine=moeRoutine)? & ('@init' initRoutine=moeRoutine)? & ('@final' finalRoutine=moeRoutine)? &
-		//('@enable' enableRoutine=moeRoutine)? & ('@disable' disableRoutine=moeRoutine)? & ('@concurrency'
-		//concurrencyRoutine=moeRoutine)? & (('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)? & ('@irun'
-		//irunRoutine=moeRoutine)? & ('@run' runRoutine=moeRoutine)?)
+		//( ( '@create'  createRoutine=moeRoutine )?
+		//& ( '@init'    initRoutine=moeRoutine   )?
+		//& ( '@final'   finalRoutine=moeRoutine  )?
+		//& ( '@enable'  enableRoutine=moeRoutine  )?
+		//& ( '@disable' disableRoutine=moeRoutine )?
+		//& ( '@concurrency' concurrencyRoutine=moeRoutine )?
+		//& ( ( '@schedule' | '@xschedule' )    scheduleRoutine=moeRoutine )?
+		//& ( '@irun' irunRoutine=moeRoutine )?
+		//& ( '@run'  runRoutine=moeRoutine  )?
+		//)
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
 		
-		//('@create' createRoutine=moeRoutine)?
+		//( '@create'  createRoutine=moeRoutine )?
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'@create'
@@ -8211,7 +10283,7 @@
 		//moeRoutine
 		public RuleCall getCreateRoutineMoeRoutineParserRuleCall_3_0_1_0() { return cCreateRoutineMoeRoutineParserRuleCall_3_0_1_0; }
 		
-		//('@init' initRoutine=moeRoutine)?
+		//( '@init'    initRoutine=moeRoutine   )?
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//'@init'
@@ -8223,7 +10295,7 @@
 		//moeRoutine
 		public RuleCall getInitRoutineMoeRoutineParserRuleCall_3_1_1_0() { return cInitRoutineMoeRoutineParserRuleCall_3_1_1_0; }
 		
-		//('@final' finalRoutine=moeRoutine)?
+		//( '@final'   finalRoutine=moeRoutine  )?
 		public Group getGroup_3_2() { return cGroup_3_2; }
 		
 		//'@final'
@@ -8235,7 +10307,7 @@
 		//moeRoutine
 		public RuleCall getFinalRoutineMoeRoutineParserRuleCall_3_2_1_0() { return cFinalRoutineMoeRoutineParserRuleCall_3_2_1_0; }
 		
-		//('@enable' enableRoutine=moeRoutine)?
+		//( '@enable'  enableRoutine=moeRoutine  )?
 		public Group getGroup_3_3() { return cGroup_3_3; }
 		
 		//'@enable'
@@ -8247,7 +10319,7 @@
 		//moeRoutine
 		public RuleCall getEnableRoutineMoeRoutineParserRuleCall_3_3_1_0() { return cEnableRoutineMoeRoutineParserRuleCall_3_3_1_0; }
 		
-		//('@disable' disableRoutine=moeRoutine)?
+		//( '@disable' disableRoutine=moeRoutine )?
 		public Group getGroup_3_4() { return cGroup_3_4; }
 		
 		//'@disable'
@@ -8259,7 +10331,7 @@
 		//moeRoutine
 		public RuleCall getDisableRoutineMoeRoutineParserRuleCall_3_4_1_0() { return cDisableRoutineMoeRoutineParserRuleCall_3_4_1_0; }
 		
-		//('@concurrency' concurrencyRoutine=moeRoutine)?
+		//( '@concurrency' concurrencyRoutine=moeRoutine )?
 		public Group getGroup_3_5() { return cGroup_3_5; }
 		
 		//'@concurrency'
@@ -8271,10 +10343,10 @@
 		//moeRoutine
 		public RuleCall getConcurrencyRoutineMoeRoutineParserRuleCall_3_5_1_0() { return cConcurrencyRoutineMoeRoutineParserRuleCall_3_5_1_0; }
 		
-		//(('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
+		//( ( '@schedule' | '@xschedule' )    scheduleRoutine=moeRoutine )?
 		public Group getGroup_3_6() { return cGroup_3_6; }
 		
-		//('@schedule' | '@xschedule')
+		//( '@schedule' | '@xschedule' )
 		public Alternatives getAlternatives_3_6_0() { return cAlternatives_3_6_0; }
 		
 		//'@schedule'
@@ -8289,7 +10361,7 @@
 		//moeRoutine
 		public RuleCall getScheduleRoutineMoeRoutineParserRuleCall_3_6_1_0() { return cScheduleRoutineMoeRoutineParserRuleCall_3_6_1_0; }
 		
-		//('@irun' irunRoutine=moeRoutine)?
+		//( '@irun' irunRoutine=moeRoutine )?
 		public Group getGroup_3_7() { return cGroup_3_7; }
 		
 		//'@irun'
@@ -8301,7 +10373,7 @@
 		//moeRoutine
 		public RuleCall getIrunRoutineMoeRoutineParserRuleCall_3_7_1_0() { return cIrunRoutineMoeRoutineParserRuleCall_3_7_1_0; }
 		
-		//('@run' runRoutine=moeRoutine)?
+		//( '@run'  runRoutine=moeRoutine  )?
 		public Group getGroup_3_8() { return cGroup_3_8; }
 		
 		//'@run'
@@ -8313,7 +10385,7 @@
 		//moeRoutine
 		public RuleCall getRunRoutineMoeRoutineParserRuleCall_3_8_1_0() { return cRunRoutineMoeRoutineParserRuleCall_3_8_1_0; }
 		
-		//routine+=Routine*
+		//( routine+=Routine )*
 		public Assignment getRoutineAssignment_4() { return cRoutineAssignment_4; }
 		
 		//Routine
@@ -8341,26 +10413,38 @@
 		private final Assignment cBodyBlockAssignment_3 = (Assignment)cGroup.eContents().get(3);
 		private final RuleCall cBodyBlockBlockStatementParserRuleCall_3_0 = (RuleCall)cBodyBlockAssignment_3.eContents().get(0);
 		
-		//moeRoutine fmlInfra::Routine:
-		//	{fmlInfra::Routine} ('(' parameterSet=FormalParameterSet? ')')? ('->' (resultSet=FormalParameterSet
-		//	| '(' resultSet=FormalParameterSet ')'))?
-		//	bodyBlock=BlockStatement;
+		//moeRoutine returns fmlInfra::Routine
+		//    : { fmlInfra::Routine }
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        ('->'
+		//            (     resultSet=FormalParameterSet
+		//            | '(' resultSet=FormalParameterSet ')'
+		//            )
+		//        )?
+		//        bodyBlock=BlockStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Routine} ('(' parameterSet=FormalParameterSet? ')')? ('->' (resultSet=FormalParameterSet | '('
-		//resultSet=FormalParameterSet ')'))? bodyBlock=BlockStatement
+		//{ fmlInfra::Routine }
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       ('->'
+		//           (     resultSet=FormalParameterSet
+		//           | '(' resultSet=FormalParameterSet ')'
+		//           )
+		//       )?
+		//       bodyBlock=BlockStatement
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::Routine}
+		//{ fmlInfra::Routine }
 		public Action getRoutineAction_0() { return cRoutineAction_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_1_0() { return cLeftParenthesisKeyword_1_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_1_1() { return cParameterSetAssignment_1_1; }
 		
 		//FormalParameterSet
@@ -8369,13 +10453,19 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_1_2() { return cRightParenthesisKeyword_1_2; }
 		
-		//('->' (resultSet=FormalParameterSet | '(' resultSet=FormalParameterSet ')'))?
+		//('->'
+		//    (     resultSet=FormalParameterSet
+		//    | '(' resultSet=FormalParameterSet ')'
+		//    )
+		//)?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'->'
 		public Keyword getHyphenMinusGreaterThanSignKeyword_2_0() { return cHyphenMinusGreaterThanSignKeyword_2_0; }
 		
-		//(resultSet=FormalParameterSet | '(' resultSet=FormalParameterSet ')')
+		//(     resultSet=FormalParameterSet
+		//| '(' resultSet=FormalParameterSet ')'
+		//)
 		public Alternatives getAlternatives_2_1() { return cAlternatives_2_1; }
 		
 		//resultSet=FormalParameterSet
@@ -8436,33 +10526,45 @@
 		private final Assignment cBodyBlockAssignment_8 = (Assignment)cGroup.eContents().get(8);
 		private final RuleCall cBodyBlockBlockStatementParserRuleCall_8_0 = (RuleCall)cBodyBlockAssignment_8.eContents().get(0);
 		
-		//Routine fmlInfra::Routine:
-		//	visibility=VisibilityKind? macro?='macro'? DesignDebugTrace*
-		//	'routine'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')? ('-->'
-		//	(resultSet=FormalParameterSet
-		//	| '(' resultSet=FormalParameterSet ')'))?
-		//	bodyBlock=BlockStatement;
+		//Routine returns fmlInfra::Routine
+		//    : ( visibility=VisibilityKind )?  ( macro?='macro' )?  ( DesignDebugTrace )*
+		//        'routine'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        ( '-->'
+		//            (     resultSet=FormalParameterSet
+		//            | '(' resultSet=FormalParameterSet ')'
+		//            )
+		//        )?
+		//        bodyBlock=BlockStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//visibility=VisibilityKind? macro?='macro'? DesignDebugTrace* 'routine' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')? ('-->' (resultSet=FormalParameterSet |
-		//'(' resultSet=FormalParameterSet ')'))? bodyBlock=BlockStatement
+		//( visibility=VisibilityKind )?  ( macro?='macro' )?  ( DesignDebugTrace )*
+		//       'routine'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       ( '-->'
+		//           (     resultSet=FormalParameterSet
+		//           | '(' resultSet=FormalParameterSet ')'
+		//           )
+		//       )?
+		//       bodyBlock=BlockStatement
 		public Group getGroup() { return cGroup; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_0() { return cVisibilityAssignment_0; }
 		
 		//VisibilityKind
 		public RuleCall getVisibilityVisibilityKindEnumRuleCall_0_0() { return cVisibilityVisibilityKindEnumRuleCall_0_0; }
 		
-		//macro?='macro'?
+		//( macro?='macro' )?
 		public Assignment getMacroAssignment_1() { return cMacroAssignment_1; }
 		
 		//'macro'
 		public Keyword getMacroMacroKeyword_1_0() { return cMacroMacroKeyword_1_0; }
 		
-		//DesignDebugTrace*
+		//( DesignDebugTrace )*
 		public RuleCall getDesignDebugTraceParserRuleCall_2() { return cDesignDebugTraceParserRuleCall_2; }
 		
 		//'routine'
@@ -8474,19 +10576,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_5_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_5_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_6_0() { return cLeftParenthesisKeyword_6_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_6_1() { return cParameterSetAssignment_6_1; }
 		
 		//FormalParameterSet
@@ -8495,13 +10597,19 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_6_2() { return cRightParenthesisKeyword_6_2; }
 		
-		//('-->' (resultSet=FormalParameterSet | '(' resultSet=FormalParameterSet ')'))?
+		//( '-->'
+		//    (     resultSet=FormalParameterSet
+		//    | '(' resultSet=FormalParameterSet ')'
+		//    )
+		//)?
 		public Group getGroup_7() { return cGroup_7; }
 		
 		//'-->'
 		public Keyword getHyphenMinusHyphenMinusGreaterThanSignKeyword_7_0() { return cHyphenMinusHyphenMinusGreaterThanSignKeyword_7_0; }
 		
-		//(resultSet=FormalParameterSet | '(' resultSet=FormalParameterSet ')')
+		//(     resultSet=FormalParameterSet
+		//| '(' resultSet=FormalParameterSet ')'
+		//)
 		public Alternatives getAlternatives_7_1() { return cAlternatives_7_1; }
 		
 		//resultSet=FormalParameterSet
@@ -8545,22 +10653,31 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Section Model Of Interaction / Communication Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//ModelOfInteraction fmlInfra::ModelOfInteraction:
-		//	{fmlInfra::ModelOfInteraction}
-		//	'@com:' (routes+=Route
-		//	| connectors+=Connector)*;
+		//ModelOfInteraction returns fmlInfra::ModelOfInteraction
+		//    : { fmlInfra::ModelOfInteraction }
+		//        '@com:'
+		//        ( routes+=Route
+		//        | connectors+=Connector
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ModelOfInteraction} '@com:' (routes+=Route | connectors+=Connector)*
+		//{ fmlInfra::ModelOfInteraction }
+		//       '@com:'
+		//       ( routes+=Route
+		//       | connectors+=Connector
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ModelOfInteraction}
+		//{ fmlInfra::ModelOfInteraction }
 		public Action getModelOfInteractionAction_0() { return cModelOfInteractionAction_0; }
 		
 		//'@com:'
 		public Keyword getComKeyword_1() { return cComKeyword_1; }
 		
-		//(routes+=Route | connectors+=Connector)*
+		//( routes+=Route
+		//| connectors+=Connector
+		//)*
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
 		//routes+=Route
@@ -8604,19 +10721,31 @@
 		private final Keyword cRightSquareBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		private final Keyword cSemicolonKeyword_9 = (Keyword)cGroup.eContents().get(9);
 		
-		//Route fmlInfra::Route:
-		//	{fmlInfra::Route}
-		//	'route' '<' protocol=ComRouteProtocol '>' (name=ESIdentifier unrestrictedName=UnrestrictedName?)?
-		//	'[' ('*'
-		//	| signals+=[fmlInfra::Signal|ESUfid] (',' signals+=[fmlInfra::Signal|ESUfid])*)
-		//	']' ';';
+		//Route returns fmlInfra::Route
+		//    : { fmlInfra::Route }
+		//        'route' '<' protocol=ComRouteProtocol '>'
+		//        ( name=ESIdentifier ( unrestrictedName=UnrestrictedName )? )?
+		//        '['
+		//        ( '*'
+		//        | signals+=[fmlInfra::Signal|ESUfid]
+		//            ( ',' signals+=[fmlInfra::Signal|ESUfid] )*
+		//        )
+		//        ']' ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Route} 'route' '<' protocol=ComRouteProtocol '>' (name=ESIdentifier unrestrictedName=UnrestrictedName?)? '['
-		//('*' | signals+=[fmlInfra::Signal|ESUfid] (',' signals+=[fmlInfra::Signal|ESUfid])*) ']' ';'
+		//{ fmlInfra::Route }
+		//       'route' '<' protocol=ComRouteProtocol '>'
+		//       ( name=ESIdentifier ( unrestrictedName=UnrestrictedName )? )?
+		//       '['
+		//       ( '*'
+		//       | signals+=[fmlInfra::Signal|ESUfid]
+		//           ( ',' signals+=[fmlInfra::Signal|ESUfid] )*
+		//       )
+		//       ']' ';'
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::Route}
+		//{ fmlInfra::Route }
 		public Action getRouteAction_0() { return cRouteAction_0; }
 		
 		//'route'
@@ -8634,7 +10763,7 @@
 		//'>'
 		public Keyword getGreaterThanSignKeyword_4() { return cGreaterThanSignKeyword_4; }
 		
-		//(name=ESIdentifier unrestrictedName=UnrestrictedName?)?
+		//( name=ESIdentifier ( unrestrictedName=UnrestrictedName )? )?
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//name=ESIdentifier
@@ -8643,7 +10772,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_5_0_0() { return cNameESIdentifierParserRuleCall_5_0_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5_1() { return cUnrestrictedNameAssignment_5_1; }
 		
 		//UnrestrictedName
@@ -8652,13 +10781,17 @@
 		//'['
 		public Keyword getLeftSquareBracketKeyword_6() { return cLeftSquareBracketKeyword_6; }
 		
-		//('*' | signals+=[fmlInfra::Signal|ESUfid] (',' signals+=[fmlInfra::Signal|ESUfid])*)
+		//( '*'
+		//| signals+=[fmlInfra::Signal|ESUfid]
+		//    ( ',' signals+=[fmlInfra::Signal|ESUfid] )*
+		//)
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
 		//'*'
 		public Keyword getAsteriskKeyword_7_0() { return cAsteriskKeyword_7_0; }
 		
-		//signals+=[fmlInfra::Signal|ESUfid] (',' signals+=[fmlInfra::Signal|ESUfid])*
+		//signals+=[fmlInfra::Signal|ESUfid]
+		//           ( ',' signals+=[fmlInfra::Signal|ESUfid] )*
 		public Group getGroup_7_1() { return cGroup_7_1; }
 		
 		//signals+=[fmlInfra::Signal|ESUfid]
@@ -8670,7 +10803,7 @@
 		//ESUfid
 		public RuleCall getSignalsSignalESUfidParserRuleCall_7_1_0_0_1() { return cSignalsSignalESUfidParserRuleCall_7_1_0_0_1; }
 		
-		//(',' signals+=[fmlInfra::Signal|ESUfid])*
+		//( ',' signals+=[fmlInfra::Signal|ESUfid] )*
 		public Group getGroup_7_1_1() { return cGroup_7_1_1; }
 		
 		//','
@@ -8720,17 +10853,36 @@
 		private final Assignment cBufferAssignment_3 = (Assignment)cAlternatives.eContents().get(3);
 		private final RuleCall cBufferComBufferParserRuleCall_3_0 = (RuleCall)cBufferAssignment_3.eContents().get(0);
 		
-		//ComRouteProtocol fmlInfra::ComProtocol:
-		//	protocol=ComProtocolKind
-		//	| protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer) '>')?
-		//	| inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer;
+		//ComRouteProtocol returns fmlInfra::ComProtocol
+		//    : protocol=ComProtocolKind
+		//    | protocol=BufferProtocolKind
+		//        ( ':'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            )
+		//        | '<'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            ) '>'
+		//        )?
+		//    | inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//protocol=ComProtocolKind | protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<'
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer) '>')? | inner_buffer=BufferContainerType | buffer=ComBuffer
+		//protocol=ComProtocolKind
+		//   | protocol=BufferProtocolKind
+		//       ( ':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
+		//       | '<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
+		//       )?
+		//   | inner_buffer=BufferContainerType
+		//   | buffer=ComBuffer
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//protocol=ComProtocolKind
@@ -8739,8 +10891,16 @@
 		//ComProtocolKind
 		public RuleCall getProtocolComProtocolKindEnumRuleCall_0_0() { return cProtocolComProtocolKindEnumRuleCall_0_0; }
 		
-		//protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<'
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer) '>')?
+		//protocol=BufferProtocolKind
+		//       ( ':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
+		//       | '<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
+		//       )?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//protocol=BufferProtocolKind
@@ -8749,17 +10909,29 @@
 		//BufferProtocolKind
 		public RuleCall getProtocolBufferProtocolKindEnumRuleCall_1_0_0() { return cProtocolBufferProtocolKindEnumRuleCall_1_0_0; }
 		
-		//(':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType | buffer=ComBuffer)
-		//'>')?
+		//( ':'
+		//    ( inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    )
+		//| '<'
+		//    ( inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    ) '>'
+		//)?
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
-		//':' (inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
 		public Group getGroup_1_1_0() { return cGroup_1_1_0; }
 		
 		//':'
 		public Keyword getColonKeyword_1_1_0_0() { return cColonKeyword_1_1_0_0; }
 		
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//( inner_buffer=BufferContainerType
+		//| buffer=ComBuffer
+		//)
 		public Alternatives getAlternatives_1_1_0_1() { return cAlternatives_1_1_0_1; }
 		
 		//inner_buffer=BufferContainerType
@@ -8774,13 +10946,18 @@
 		//ComBuffer
 		public RuleCall getBufferComBufferParserRuleCall_1_1_0_1_1_0() { return cBufferComBufferParserRuleCall_1_1_0_1_1_0; }
 		
-		//'<' (inner_buffer=BufferContainerType | buffer=ComBuffer) '>'
+		//'<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
 		public Group getGroup_1_1_1() { return cGroup_1_1_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_1_1_1_0() { return cLessThanSignKeyword_1_1_1_0; }
 		
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//( inner_buffer=BufferContainerType
+		//| buffer=ComBuffer
+		//)
 		public Alternatives getAlternatives_1_1_1_1() { return cAlternatives_1_1_1_1; }
 		
 		//inner_buffer=BufferContainerType
@@ -8829,17 +11006,19 @@
 		private final RuleCall cConnectorEndConnectorEndParserRuleCall_7_0 = (RuleCall)cConnectorEndAssignment_7.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		
-		//Connector fmlInfra::Connector:
-		//	('connector' | 'connect') '<' protocol=ComProtocol '>'
-		//	name=ESIdentifier? unrestrictedName=UnrestrictedName?
-		//	'{' connectorEnd+=ConnectorEnd+ '}';
+		//Connector returns fmlInfra::Connector
+		//    : ( 'connector' | 'connect' ) '<' protocol=ComProtocol '>'
+		//        ( name=ESIdentifier )?  ( unrestrictedName=UnrestrictedName )?
+		//        '{' (connectorEnd+=ConnectorEnd)+ '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//('connector' | 'connect') '<' protocol=ComProtocol '>' name=ESIdentifier? unrestrictedName=UnrestrictedName? '{'
-		//connectorEnd+=ConnectorEnd+ '}'
+		//( 'connector' | 'connect' ) '<' protocol=ComProtocol '>'
+		//       ( name=ESIdentifier )?  ( unrestrictedName=UnrestrictedName )?
+		//       '{' (connectorEnd+=ConnectorEnd)+ '}'
 		public Group getGroup() { return cGroup; }
 		
-		//('connector' | 'connect')
+		//( 'connector' | 'connect' )
 		public Alternatives getAlternatives_0() { return cAlternatives_0; }
 		
 		//'connector'
@@ -8860,13 +11039,13 @@
 		//'>'
 		public Keyword getGreaterThanSignKeyword_3() { return cGreaterThanSignKeyword_3; }
 		
-		//name=ESIdentifier?
+		//( name=ESIdentifier )?
 		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
 		
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
@@ -8875,7 +11054,7 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
 		
-		//connectorEnd+=ConnectorEnd+
+		//(connectorEnd+=ConnectorEnd)+
 		public Assignment getConnectorEndAssignment_7() { return cConnectorEndAssignment_7; }
 		
 		//ConnectorEnd
@@ -8923,21 +11102,40 @@
 		private final Assignment cCastAssignment_5 = (Assignment)cAlternatives.eContents().get(5);
 		private final RuleCall cCastComCastKingEnumRuleCall_5_0 = (RuleCall)cCastAssignment_5.eContents().get(0);
 		
-		//ComProtocol fmlInfra::ComProtocol:
-		//	protocol=ComEnvRdvProtocolKind
-		//	| protocol=ComMultiRdvProtocolKind ('<' cast=ComCastKing '>')?
-		//	| protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer) '>')?
-		//	| inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer
-		//	| cast=ComCastKing;
+		//ComProtocol returns fmlInfra::ComProtocol
+		//    : protocol=ComEnvRdvProtocolKind
+		//    | protocol=ComMultiRdvProtocolKind ( '<' cast=ComCastKing '>')?
+		//    | protocol=BufferProtocolKind
+		//        ( ':'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            )
+		//        | '<'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            ) '>'
+		//        )?
+		//    | inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    | cast=ComCastKing
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//protocol=ComEnvRdvProtocolKind | protocol=ComMultiRdvProtocolKind ('<' cast=ComCastKing '>')? |
-		//protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<'
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer) '>')? | inner_buffer=BufferContainerType | buffer=ComBuffer |
-		//cast=ComCastKing
+		//protocol=ComEnvRdvProtocolKind
+		//   | protocol=ComMultiRdvProtocolKind ( '<' cast=ComCastKing '>')?
+		//   | protocol=BufferProtocolKind
+		//       ( ':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
+		//       | '<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
+		//       )?
+		//   | inner_buffer=BufferContainerType
+		//   | buffer=ComBuffer
+		//   | cast=ComCastKing
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//protocol=ComEnvRdvProtocolKind
@@ -8946,7 +11144,7 @@
 		//ComEnvRdvProtocolKind
 		public RuleCall getProtocolComEnvRdvProtocolKindEnumRuleCall_0_0() { return cProtocolComEnvRdvProtocolKindEnumRuleCall_0_0; }
 		
-		//protocol=ComMultiRdvProtocolKind ('<' cast=ComCastKing '>')?
+		//protocol=ComMultiRdvProtocolKind ( '<' cast=ComCastKing '>')?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//protocol=ComMultiRdvProtocolKind
@@ -8955,7 +11153,7 @@
 		//ComMultiRdvProtocolKind
 		public RuleCall getProtocolComMultiRdvProtocolKindEnumRuleCall_1_0_0() { return cProtocolComMultiRdvProtocolKindEnumRuleCall_1_0_0; }
 		
-		//('<' cast=ComCastKing '>')?
+		//( '<' cast=ComCastKing '>')?
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'<'
@@ -8970,8 +11168,16 @@
 		//'>'
 		public Keyword getGreaterThanSignKeyword_1_1_2() { return cGreaterThanSignKeyword_1_1_2; }
 		
-		//protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<'
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer) '>')?
+		//protocol=BufferProtocolKind
+		//       ( ':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
+		//       | '<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
+		//       )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//protocol=BufferProtocolKind
@@ -8980,17 +11186,29 @@
 		//BufferProtocolKind
 		public RuleCall getProtocolBufferProtocolKindEnumRuleCall_2_0_0() { return cProtocolBufferProtocolKindEnumRuleCall_2_0_0; }
 		
-		//(':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType | buffer=ComBuffer)
-		//'>')?
+		//( ':'
+		//    ( inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    )
+		//| '<'
+		//    ( inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    ) '>'
+		//)?
 		public Alternatives getAlternatives_2_1() { return cAlternatives_2_1; }
 		
-		//':' (inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
 		public Group getGroup_2_1_0() { return cGroup_2_1_0; }
 		
 		//':'
 		public Keyword getColonKeyword_2_1_0_0() { return cColonKeyword_2_1_0_0; }
 		
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//( inner_buffer=BufferContainerType
+		//| buffer=ComBuffer
+		//)
 		public Alternatives getAlternatives_2_1_0_1() { return cAlternatives_2_1_0_1; }
 		
 		//inner_buffer=BufferContainerType
@@ -9005,13 +11223,18 @@
 		//ComBuffer
 		public RuleCall getBufferComBufferParserRuleCall_2_1_0_1_1_0() { return cBufferComBufferParserRuleCall_2_1_0_1_1_0; }
 		
-		//'<' (inner_buffer=BufferContainerType | buffer=ComBuffer) '>'
+		//'<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
 		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_1_1_0() { return cLessThanSignKeyword_2_1_1_0; }
 		
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//( inner_buffer=BufferContainerType
+		//| buffer=ComBuffer
+		//)
 		public Alternatives getAlternatives_2_1_1_1() { return cAlternatives_2_1_1_1; }
 		
 		//inner_buffer=BufferContainerType
@@ -9081,17 +11304,25 @@
 		private final Keyword cSemicolonKeyword_3_2_1_1 = (Keyword)cGroup_3_2_1.eContents().get(1);
 		private final Keyword cRightCurlyBracketKeyword_3_2_2 = (Keyword)cGroup_3_2.eContents().get(2);
 		
-		//ConnectorEnd fmlInfra::ConnectorEnd:
-		//	{fmlInfra::ConnectorEnd} direction=ChannelDirection ('<' protocol=ComPointProtocol '>')? (points+=ComPoint ';'
-		//	| '[' points+=ComPoint (',' points+=ComPoint)* ']' ';'
-		//	| '{' (points+=ComPoint ';')+ '}');
+		//ConnectorEnd returns fmlInfra::ConnectorEnd
+		//    : { fmlInfra::ConnectorEnd }
+		//        direction=ChannelDirection ( '<' protocol=ComPointProtocol '>' )?
+		//        ( points+=ComPoint ';'
+		//        | '[' points+=ComPoint ( ',' points+=ComPoint )* ']' ';'
+		//        | '{' ( points+=ComPoint ';' )+ '}'
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ConnectorEnd} direction=ChannelDirection ('<' protocol=ComPointProtocol '>')? (points+=ComPoint ';' | '['
-		//points+=ComPoint (',' points+=ComPoint)* ']' ';' | '{' (points+=ComPoint ';')+ '}')
+		//{ fmlInfra::ConnectorEnd }
+		//       direction=ChannelDirection ( '<' protocol=ComPointProtocol '>' )?
+		//       ( points+=ComPoint ';'
+		//       | '[' points+=ComPoint ( ',' points+=ComPoint )* ']' ';'
+		//       | '{' ( points+=ComPoint ';' )+ '}'
+		//       )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ConnectorEnd}
+		//{ fmlInfra::ConnectorEnd }
 		public Action getConnectorEndAction_0() { return cConnectorEndAction_0; }
 		
 		//direction=ChannelDirection
@@ -9100,7 +11331,7 @@
 		//ChannelDirection
 		public RuleCall getDirectionChannelDirectionEnumRuleCall_1_0() { return cDirectionChannelDirectionEnumRuleCall_1_0; }
 		
-		//('<' protocol=ComPointProtocol '>')?
+		//( '<' protocol=ComPointProtocol '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -9115,7 +11346,10 @@
 		//'>'
 		public Keyword getGreaterThanSignKeyword_2_2() { return cGreaterThanSignKeyword_2_2; }
 		
-		//(points+=ComPoint ';' | '[' points+=ComPoint (',' points+=ComPoint)* ']' ';' | '{' (points+=ComPoint ';')+ '}')
+		//( points+=ComPoint ';'
+		//| '[' points+=ComPoint ( ',' points+=ComPoint )* ']' ';'
+		//| '{' ( points+=ComPoint ';' )+ '}'
+		//)
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
 		//points+=ComPoint ';'
@@ -9130,7 +11364,7 @@
 		//';'
 		public Keyword getSemicolonKeyword_3_0_1() { return cSemicolonKeyword_3_0_1; }
 		
-		//'[' points+=ComPoint (',' points+=ComPoint)* ']' ';'
+		//'[' points+=ComPoint ( ',' points+=ComPoint )* ']' ';'
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//'['
@@ -9142,7 +11376,7 @@
 		//ComPoint
 		public RuleCall getPointsComPointParserRuleCall_3_1_1_0() { return cPointsComPointParserRuleCall_3_1_1_0; }
 		
-		//(',' points+=ComPoint)*
+		//( ',' points+=ComPoint )*
 		public Group getGroup_3_1_2() { return cGroup_3_1_2; }
 		
 		//','
@@ -9160,13 +11394,13 @@
 		//';'
 		public Keyword getSemicolonKeyword_3_1_4() { return cSemicolonKeyword_3_1_4; }
 		
-		//'{' (points+=ComPoint ';')+ '}'
+		//'{' ( points+=ComPoint ';' )+ '}'
 		public Group getGroup_3_2() { return cGroup_3_2; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_2_0() { return cLeftCurlyBracketKeyword_3_2_0; }
 		
-		//(points+=ComPoint ';')+
+		//( points+=ComPoint ';' )+
 		public Group getGroup_3_2_1() { return cGroup_3_2_1; }
 		
 		//points+=ComPoint
@@ -9196,20 +11430,24 @@
 		private final CrossReference cPortPortCrossReference_2_0 = (CrossReference)cPortAssignment_2.eContents().get(0);
 		private final RuleCall cPortPortESIdentifierParserRuleCall_2_0_1 = (RuleCall)cPortPortCrossReference_2_0.eContents().get(1);
 		
-		//ComPoint fmlInfra::ComPoint:
-		//	{fmlInfra::ComPoint} (machine=[fmlCommon::NamedElement|ESIdentifier] ('->' | '.'))?
-		//	//		( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
-		//	port=[fmlInfra::Port|ESIdentifier];
+		//ComPoint returns fmlInfra::ComPoint
+		//    : { fmlInfra::ComPoint }
+		//        ( machine=[fmlCommon::NamedElement|ESIdentifier] ('->'| '.') )?
+		////        ( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
+		//        port=[fmlInfra::Port|ESIdentifier]
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ComPoint} (machine=[fmlCommon::NamedElement|ESIdentifier] ('->' | '.'))? //		( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
-		//port=[fmlInfra::Port|ESIdentifier]
+		// { fmlInfra::ComPoint }
+		//        ( machine=[fmlCommon::NamedElement|ESIdentifier] ('->'| '.') )?
+		////        ( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
+		//        port=[fmlInfra::Port|ESIdentifier]
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::ComPoint}
+		//{ fmlInfra::ComPoint }
 		public Action getComPointAction_0() { return cComPointAction_0; }
 		
-		//(machine=[fmlCommon::NamedElement|ESIdentifier] ('->' | '.'))?
+		//( machine=[fmlCommon::NamedElement|ESIdentifier] ('->'| '.') )?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//machine=[fmlCommon::NamedElement|ESIdentifier]
@@ -9221,7 +11459,7 @@
 		//ESIdentifier
 		public RuleCall getMachineNamedElementESIdentifierParserRuleCall_1_0_0_1() { return cMachineNamedElementESIdentifierParserRuleCall_1_0_0_1; }
 		
-		//('->' | '.')
+		//('->'| '.')
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
 		//'->'
@@ -9230,8 +11468,8 @@
 		//'.'
 		public Keyword getFullStopKeyword_1_1_1() { return cFullStopKeyword_1_1_1; }
 		
-		////		( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
-		//port=[fmlInfra::Port|ESIdentifier]
+		////        ( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
+		//        port=[fmlInfra::Port|ESIdentifier]
 		public Assignment getPortAssignment_2() { return cPortAssignment_2; }
 		
 		//[fmlInfra::Port|ESIdentifier]
@@ -9267,22 +11505,48 @@
 		private final Assignment cBufferRefAssignment_2 = (Assignment)cAlternatives.eContents().get(2);
 		private final RuleCall cBufferRefComBufferRefParserRuleCall_2_0 = (RuleCall)cBufferRefAssignment_2.eContents().get(0);
 		
-		//ComPointProtocol fmlInfra::ComProtocol:
-		//	protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType
-		//	| buffer=ComBuffer) '>')?
-		//	| inner_buffer=BufferContainerType
-		//	//	| buffer=ComBuffer
-		//	| bufferRef=ComBufferRef;
+		//ComPointProtocol returns fmlInfra::ComProtocol
+		//    : protocol=BufferProtocolKind
+		//        ( ':'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            )
+		//        | '<'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            ) '>'
+		//        )?
+		//    | inner_buffer=BufferContainerType
+		////    | buffer=ComBuffer
+		//    | bufferRef=ComBufferRef
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<'
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer) '>')? | inner_buffer=BufferContainerType //	| buffer=ComBuffer
-		//| bufferRef=ComBufferRef
+		// protocol=BufferProtocolKind
+		//        ( ':'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            )
+		//        | '<'
+		//            ( inner_buffer=BufferContainerType
+		//            | buffer=ComBuffer
+		//            ) '>'
+		//        )?
+		//    | inner_buffer=BufferContainerType
+		////    | buffer=ComBuffer
+		//    | bufferRef=ComBufferRef
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<'
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer) '>')?
+		//protocol=BufferProtocolKind
+		//       ( ':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
+		//       | '<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
+		//       )?
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//protocol=BufferProtocolKind
@@ -9291,17 +11555,29 @@
 		//BufferProtocolKind
 		public RuleCall getProtocolBufferProtocolKindEnumRuleCall_0_0_0() { return cProtocolBufferProtocolKindEnumRuleCall_0_0_0; }
 		
-		//(':' (inner_buffer=BufferContainerType | buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType | buffer=ComBuffer)
-		//'>')?
+		//( ':'
+		//    ( inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    )
+		//| '<'
+		//    ( inner_buffer=BufferContainerType
+		//    | buffer=ComBuffer
+		//    ) '>'
+		//)?
 		public Alternatives getAlternatives_0_1() { return cAlternatives_0_1; }
 		
-		//':' (inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//':'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           )
 		public Group getGroup_0_1_0() { return cGroup_0_1_0; }
 		
 		//':'
 		public Keyword getColonKeyword_0_1_0_0() { return cColonKeyword_0_1_0_0; }
 		
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//( inner_buffer=BufferContainerType
+		//| buffer=ComBuffer
+		//)
 		public Alternatives getAlternatives_0_1_0_1() { return cAlternatives_0_1_0_1; }
 		
 		//inner_buffer=BufferContainerType
@@ -9316,13 +11592,18 @@
 		//ComBuffer
 		public RuleCall getBufferComBufferParserRuleCall_0_1_0_1_1_0() { return cBufferComBufferParserRuleCall_0_1_0_1_1_0; }
 		
-		//'<' (inner_buffer=BufferContainerType | buffer=ComBuffer) '>'
+		//'<'
+		//           ( inner_buffer=BufferContainerType
+		//           | buffer=ComBuffer
+		//           ) '>'
 		public Group getGroup_0_1_1() { return cGroup_0_1_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_0_1_1_0() { return cLessThanSignKeyword_0_1_1_0; }
 		
-		//(inner_buffer=BufferContainerType | buffer=ComBuffer)
+		//( inner_buffer=BufferContainerType
+		//| buffer=ComBuffer
+		//)
 		public Alternatives getAlternatives_0_1_1_1() { return cAlternatives_0_1_1_1; }
 		
 		//inner_buffer=BufferContainerType
@@ -9366,19 +11647,26 @@
 		private final CrossReference cElementBufferCrossReference_1_0 = (CrossReference)cElementAssignment_1.eContents().get(0);
 		private final RuleCall cElementBufferESIdentifierParserRuleCall_1_0_1 = (RuleCall)cElementBufferCrossReference_1_0.eContents().get(1);
 		
-		//ComBuffer fmlExpr::ValueElementSpecification:
-		//	(parent=LiteralPureReferenceMachine
-		//	// ( '.' | '->' ) element
-		//	kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind))?
-		//	element=[fmlInfra::Buffer|ESIdentifier];
+		//ComBuffer returns fmlExpr::ValueElementSpecification
+		//    : ( parent=LiteralPureReferenceMachine
+		//        // ( '.' | '->' ) element
+		//        kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//      )?
+		//      element=[fmlInfra::Buffer|ESIdentifier]
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//(parent=LiteralPureReferenceMachine // ( '.' | '->' ) element
-		//kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind))? element=[fmlInfra::Buffer|ESIdentifier]
+		//( parent=LiteralPureReferenceMachine
+		//       // ( '.' | '->' ) element
+		//       kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//     )?
+		//     element=[fmlInfra::Buffer|ESIdentifier]
 		public Group getGroup() { return cGroup; }
 		
-		//(parent=LiteralPureReferenceMachine // ( '.' | '->' ) element
-		//kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind))?
+		//( parent=LiteralPureReferenceMachine
+		//       // ( '.' | '->' ) element
+		//       kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//     )?
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//parent=LiteralPureReferenceMachine
@@ -9388,10 +11676,10 @@
 		public RuleCall getParentLiteralPureReferenceMachineParserRuleCall_0_0_0() { return cParentLiteralPureReferenceMachineParserRuleCall_0_0_0; }
 		
 		//// ( '.' | '->' ) element
-		//kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind)
+		//kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
 		public Assignment getKindAssignment_0_1() { return cKindAssignment_0_1; }
 		
-		//(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind)
+		//( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
 		public Alternatives getKindAlternatives_0_1_0() { return cKindAlternatives_0_1_0; }
 		
 		//ValueDotFieldExpressionKind
@@ -9422,19 +11710,22 @@
 		private final Assignment cElementAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cElementBufferReferenceElementParserRuleCall_2_0 = (RuleCall)cElementAssignment_2.eContents().get(0);
 		
-		//ComBufferRef fmlExpr::LiteralReferenceSpecification:
-		//	{fmlExpr::LiteralReferenceSpecification} (parent+=LiteralReferenceExpression ('.' | '->'))*
-		//	element=BufferReferenceElement;
+		//ComBufferRef returns fmlExpr::LiteralReferenceSpecification
+		//    : { fmlExpr::LiteralReferenceSpecification }
+		//        ( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
+		//        element=BufferReferenceElement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralReferenceSpecification} (parent+=LiteralReferenceExpression ('.' | '->'))*
-		//element=BufferReferenceElement
+		//{ fmlExpr::LiteralReferenceSpecification }
+		//       ( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
+		//       element=BufferReferenceElement
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlExpr::LiteralReferenceSpecification}
+		//{ fmlExpr::LiteralReferenceSpecification }
 		public Action getLiteralReferenceSpecificationAction_0() { return cLiteralReferenceSpecificationAction_0; }
 		
-		//(parent+=LiteralReferenceExpression ('.' | '->'))*
+		//( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//parent+=LiteralReferenceExpression
@@ -9443,7 +11734,7 @@
 		//LiteralReferenceExpression
 		public RuleCall getParentLiteralReferenceExpressionParserRuleCall_1_0_0() { return cParentLiteralReferenceExpressionParserRuleCall_1_0_0; }
 		
-		//('.' | '->')
+		//( '.'  |  '->' )
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
 		//'.'
@@ -9466,11 +11757,14 @@
 		private final CrossReference cElementBufferCrossReference_1_0 = (CrossReference)cElementAssignment_1.eContents().get(0);
 		private final RuleCall cElementBufferESIdentifierParserRuleCall_1_0_1 = (RuleCall)cElementBufferCrossReference_1_0.eContents().get(1);
 		
-		//BufferReferenceElement fmlExpr::LiteralReferenceElement:
-		//	{fmlExpr::LiteralReferenceElement} element=[fmlInfra::Buffer|ESIdentifier];
+		//BufferReferenceElement returns fmlExpr::LiteralReferenceElement
+		//    : {fmlExpr::LiteralReferenceElement}
+		//        element=[fmlInfra::Buffer|ESIdentifier]
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralReferenceElement} element=[fmlInfra::Buffer|ESIdentifier]
+		//{fmlExpr::LiteralReferenceElement}
+		//       element=[fmlInfra::Buffer|ESIdentifier]
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralReferenceElement}
@@ -9495,14 +11789,20 @@
 		private final RuleCall cElementMachineESIdentifierParserRuleCall_0_1_0_1 = (RuleCall)cElementMachineCrossReference_0_1_0.eContents().get(1);
 		private final RuleCall cLiteralReferenceMachineContextParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//LiteralPureReferenceMachine fmlExpr::LiteralReferenceExpression:
-		//	{fmlExpr::LiteralReferenceElement} element=[fmlInfra::Machine|ESIdentifier] | LiteralReferenceMachineContext;
+		//LiteralPureReferenceMachine returns fmlExpr::LiteralReferenceExpression
+		//    : {fmlExpr::LiteralReferenceElement}
+		//        element=[fmlInfra::Machine|ESIdentifier]
+		//    | LiteralReferenceMachineContext
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralReferenceElement} element=[fmlInfra::Machine|ESIdentifier] | LiteralReferenceMachineContext
+		//{fmlExpr::LiteralReferenceElement}
+		//       element=[fmlInfra::Machine|ESIdentifier]
+		//   | LiteralReferenceMachineContext
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{fmlExpr::LiteralReferenceElement} element=[fmlInfra::Machine|ESIdentifier]
+		//{fmlExpr::LiteralReferenceElement}
+		//       element=[fmlInfra::Machine|ESIdentifier]
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//{fmlExpr::LiteralReferenceElement}
@@ -9535,23 +11835,29 @@
 		//// Sections Declarations Data Rules
 		//////////////////////////////////////////////////////////////////////////////////
 		////TypeDefinition returns fmlType::DataType
-		////	: typedef?='type' name=ESIdentifier
-		////		( support=DataTypeReference ';'
-		////		| support=StructuredDataType
-		////		)
-		////	;
-		//TypeDefinition fmlType::DataType:
-		//	EnumerationTypeDefinition
-		//	| StructureTypeDefinition
-		//	| UnionTypeDefinition
-		//	| ChoiceTypeDefinition
-		//	| IntervalTypeDefinition
-		//	| CollectionTypeDefinition
-		//	| OtherDataTypeDefinition;
+		////    : typedef?='type' name=ESIdentifier
+		////        ( support=DataTypeReference ';'
+		////        | support=StructuredDataType
+		////        )
+		////    ;
+		//TypeDefinition returns fmlType::DataType
+		//    : EnumerationTypeDefinition
+		//    | StructureTypeDefinition
+		//    | UnionTypeDefinition
+		//    | ChoiceTypeDefinition
+		//    | IntervalTypeDefinition
+		//    | CollectionTypeDefinition
+		//    | OtherDataTypeDefinition
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//EnumerationTypeDefinition | StructureTypeDefinition | UnionTypeDefinition | ChoiceTypeDefinition |
-		//IntervalTypeDefinition | CollectionTypeDefinition | OtherDataTypeDefinition
+		//EnumerationTypeDefinition
+		//   | StructureTypeDefinition
+		//   | UnionTypeDefinition
+		//   | ChoiceTypeDefinition
+		//   | IntervalTypeDefinition
+		//   | CollectionTypeDefinition
+		//   | OtherDataTypeDefinition
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//EnumerationTypeDefinition
@@ -9582,28 +11888,30 @@
 		private final RuleCall cLiteralReferenceElementParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
 		////TypeDefinitionImpl returns fmlType::DataTypeReference
-		////	: name=ESIdentifier
-		////		( support=DataTypeReference ';'
-		////		| support=StructuredDataType
-		////		)
-		////	;
+		////    : name=ESIdentifier
+		////        ( support=DataTypeReference ';'
+		////        | support=StructuredDataType
+		////        )
+		////    ;
 		////TypeDefinitionImpl returns fmlType::DataType
-		////	: EnumerationTypeDefinitionImpl
-		////	| StructureTypeDefinitionImpl
-		////	| UnionTypeDefinitionImpl
-		////	| ChoiceTypeDefinitionImpl
+		////    : EnumerationTypeDefinitionImpl
+		////    | StructureTypeDefinitionImpl
+		////    | UnionTypeDefinitionImpl
+		////    | ChoiceTypeDefinitionImpl
 		////
-		////	| IntervalTypeDefinitionImpl
-		////	| CollectionTypeDefinitionImpl
+		////    | IntervalTypeDefinitionImpl
+		////    | CollectionTypeDefinitionImpl
 		////
-		////	| OtherDataTypeDefinitionImpl
-		////	;
-		//DataTypeMultiplicity fmlExpr::Expression:
-		//	LiteralIntegerExpression
-		//	| LiteralReferenceElement;
+		////    | OtherDataTypeDefinitionImpl
+		////    ;
+		//DataTypeMultiplicity returns fmlExpr::Expression
+		//    : LiteralIntegerExpression
+		//    | LiteralReferenceElement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralIntegerExpression | LiteralReferenceElement
+		//LiteralIntegerExpression
+		//   | LiteralReferenceElement
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralIntegerExpression
@@ -9634,23 +11942,38 @@
 		private final RuleCall cMultiplicityDataTypeMultiplicityParserRuleCall_1_2_1_0 = (RuleCall)cMultiplicityAssignment_1_2_1.eContents().get(0);
 		private final Keyword cRightSquareBracketKeyword_1_2_2 = (Keyword)cGroup_1_2.eContents().get(2);
 		
-		//DataTypeReference fmlType::DataType:
-		//	SimpleDataType ({fmlType::DataTypeReference.support=current}
-		//	'[' multiplicity=DataTypeMultiplicity ']')?
-		//	| {fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?;
+		//DataTypeReference returns fmlType::DataType
+		//    : SimpleDataType
+		//        ( {fmlType::DataTypeReference.support=current}
+		//            '[' multiplicity=DataTypeMultiplicity ']'
+		//        )?
+		//    | {fmlType::DataTypeReference}
+		//        typeref=[fmlType::DataType|ESUfid]
+		//        ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//SimpleDataType ({fmlType::DataTypeReference.support=current} '[' multiplicity=DataTypeMultiplicity ']')? |
-		//{fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?
+		//SimpleDataType
+		//       ( {fmlType::DataTypeReference.support=current}
+		//           '[' multiplicity=DataTypeMultiplicity ']'
+		//       )?
+		//   | {fmlType::DataTypeReference}
+		//       typeref=[fmlType::DataType|ESUfid]
+		//       ( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//SimpleDataType ({fmlType::DataTypeReference.support=current} '[' multiplicity=DataTypeMultiplicity ']')?
+		//SimpleDataType
+		//       ( {fmlType::DataTypeReference.support=current}
+		//           '[' multiplicity=DataTypeMultiplicity ']'
+		//       )?
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//SimpleDataType
 		public RuleCall getSimpleDataTypeParserRuleCall_0_0() { return cSimpleDataTypeParserRuleCall_0_0; }
 		
-		//({fmlType::DataTypeReference.support=current} '[' multiplicity=DataTypeMultiplicity ']')?
+		//( {fmlType::DataTypeReference.support=current}
+		//    '[' multiplicity=DataTypeMultiplicity ']'
+		//)?
 		public Group getGroup_0_1() { return cGroup_0_1; }
 		
 		//{fmlType::DataTypeReference.support=current}
@@ -9668,7 +11991,9 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_0_1_3() { return cRightSquareBracketKeyword_0_1_3; }
 		
-		//{fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?
+		//{fmlType::DataTypeReference}
+		//       typeref=[fmlType::DataType|ESUfid]
+		//       ( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlType::DataTypeReference}
@@ -9683,7 +12008,7 @@
 		//ESUfid
 		public RuleCall getTyperefDataTypeESUfidParserRuleCall_1_1_0_1() { return cTyperefDataTypeESUfidParserRuleCall_1_1_0_1; }
 		
-		//('[' multiplicity=DataTypeMultiplicity ']')?
+		//( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//'['
@@ -9733,24 +12058,32 @@
 		private final RuleCall cConstraintTypeConstraintRoutineParserRuleCall_6_0_0 = (RuleCall)cConstraintAssignment_6_0.eContents().get(0);
 		private final Keyword cSemicolonKeyword_6_1 = (Keyword)cAlternatives_6.eContents().get(1);
 		
-		//OtherDataTypeDefinition fmlType::DataTypeReference:
-		//	{fmlType::DataTypeReference} visibility=VisibilityKind? typedef?='type'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? (support=PrimitiveType ('[' multiplicity=DataTypeMultiplicity
-		//	']')?
-		//	| typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?) (constraint=TypeConstraintRoutine |
-		//	';');
+		//OtherDataTypeDefinition returns fmlType::DataTypeReference
+		//    : {fmlType::DataTypeReference}
+		//        ( visibility=VisibilityKind )?  typedef?='type'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( support=PrimitiveType
+		//            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//        | typeref=[fmlType::DataType|ESUfid]
+		//            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//        )  ( constraint=TypeConstraintRoutine | ';' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::DataTypeReference} visibility=VisibilityKind? typedef?='type' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? (support=PrimitiveType ('[' multiplicity=DataTypeMultiplicity ']')? |
-		//typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?) (constraint=TypeConstraintRoutine |
-		//';')
+		//{fmlType::DataTypeReference}
+		//       ( visibility=VisibilityKind )?  typedef?='type'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( support=PrimitiveType
+		//           ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//       | typeref=[fmlType::DataType|ESUfid]
+		//           ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//       )  ( constraint=TypeConstraintRoutine | ';' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::DataTypeReference}
 		public Action getDataTypeReferenceAction_0() { return cDataTypeReferenceAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -9768,17 +12101,21 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//(support=PrimitiveType ('[' multiplicity=DataTypeMultiplicity ']')? | typeref=[fmlType::DataType|ESUfid] ('['
-		//multiplicity=DataTypeMultiplicity ']')?)
+		//( support=PrimitiveType
+		//    ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//| typeref=[fmlType::DataType|ESUfid]
+		//    ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//)
 		public Alternatives getAlternatives_5() { return cAlternatives_5; }
 		
-		//support=PrimitiveType ('[' multiplicity=DataTypeMultiplicity ']')?
+		//support=PrimitiveType
+		//           ( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_5_0() { return cGroup_5_0; }
 		
 		//support=PrimitiveType
@@ -9787,7 +12124,7 @@
 		//PrimitiveType
 		public RuleCall getSupportPrimitiveTypeParserRuleCall_5_0_0_0() { return cSupportPrimitiveTypeParserRuleCall_5_0_0_0; }
 		
-		//('[' multiplicity=DataTypeMultiplicity ']')?
+		//( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_5_0_1() { return cGroup_5_0_1; }
 		
 		//'['
@@ -9802,7 +12139,8 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_5_0_1_2() { return cRightSquareBracketKeyword_5_0_1_2; }
 		
-		//typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?
+		//typeref=[fmlType::DataType|ESUfid]
+		//           ( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_5_1() { return cGroup_5_1; }
 		
 		//typeref=[fmlType::DataType|ESUfid]
@@ -9814,7 +12152,7 @@
 		//ESUfid
 		public RuleCall getTyperefDataTypeESUfidParserRuleCall_5_1_0_0_1() { return cTyperefDataTypeESUfidParserRuleCall_5_1_0_0_1; }
 		
-		//('[' multiplicity=DataTypeMultiplicity ']')?
+		//( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_5_1_1() { return cGroup_5_1_1; }
 		
 		//'['
@@ -9829,7 +12167,7 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_5_1_1_2() { return cRightSquareBracketKeyword_5_1_1_2; }
 		
-		//(constraint=TypeConstraintRoutine | ';')
+		//( constraint=TypeConstraintRoutine | ';' )
 		public Alternatives getAlternatives_6() { return cAlternatives_6; }
 		
 		//constraint=TypeConstraintRoutine
@@ -9861,18 +12199,27 @@
 		private final Keyword cSemicolonKeyword_4_1_1 = (Keyword)cGroup_4_1.eContents().get(1);
 		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
-		//TypeConstraintRoutine fmlInfra::Routine:
-		//	{fmlInfra::Routine} '{'
-		//	'@constraint' ('(' parameterSet=VariableRoutineParameterSet ')')? (bodyBlock=BlockStatement
-		//	| bodyBlock=ConditionalBlockStatement ';')
-		//	'}';
+		//TypeConstraintRoutine returns fmlInfra::Routine
+		//    : { fmlInfra::Routine } '{'
+		//        '@constraint'
+		//        ( '(' parameterSet=VariableRoutineParameterSet ')' )?
+		//        ( bodyBlock=BlockStatement
+		//        | bodyBlock=ConditionalBlockStatement ';'
+		//        )
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Routine} '{' '@constraint' ('(' parameterSet=VariableRoutineParameterSet ')')? (bodyBlock=BlockStatement |
-		//bodyBlock=ConditionalBlockStatement ';') '}'
+		//{ fmlInfra::Routine } '{'
+		//       '@constraint'
+		//       ( '(' parameterSet=VariableRoutineParameterSet ')' )?
+		//       ( bodyBlock=BlockStatement
+		//       | bodyBlock=ConditionalBlockStatement ';'
+		//       )
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::Routine}
+		//{ fmlInfra::Routine }
 		public Action getRoutineAction_0() { return cRoutineAction_0; }
 		
 		//'{'
@@ -9881,7 +12228,7 @@
 		//'@constraint'
 		public Keyword getConstraintKeyword_2() { return cConstraintKeyword_2; }
 		
-		//('(' parameterSet=VariableRoutineParameterSet ')')?
+		//( '(' parameterSet=VariableRoutineParameterSet ')' )?
 		public Group getGroup_3() { return cGroup_3; }
 		
 		//'('
@@ -9896,7 +12243,9 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_3_2() { return cRightParenthesisKeyword_3_2; }
 		
-		//(bodyBlock=BlockStatement | bodyBlock=ConditionalBlockStatement ';')
+		//( bodyBlock=BlockStatement
+		//| bodyBlock=ConditionalBlockStatement ';'
+		//)
 		public Alternatives getAlternatives_4() { return cAlternatives_4; }
 		
 		//bodyBlock=BlockStatement
@@ -9927,11 +12276,14 @@
 		private final Assignment cStatementAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cStatementGuardTestExpressionParserRuleCall_1_0 = (RuleCall)cStatementAssignment_1.eContents().get(0);
 		
-		//ConditionalBlockStatement fmlStmnt::BlockStatement:
-		//	{fmlStmnt::BlockStatement} statement+=GuardTestExpression;
+		//ConditionalBlockStatement returns fmlStmnt::BlockStatement
+		//    : {fmlStmnt::BlockStatement}
+		//        statement+=GuardTestExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::BlockStatement} statement+=GuardTestExpression
+		//{fmlStmnt::BlockStatement}
+		//       statement+=GuardTestExpression
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmnt::BlockStatement}
@@ -9950,8 +12302,9 @@
 		private final Assignment cConditionAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cConditionExpressionParserRuleCall_1_0 = (RuleCall)cConditionAssignment_1.eContents().get(0);
 		
-		//GuardTestExpression fmlStmnt::GuardStatement:
-		//	'|=>' condition=Expression;
+		//GuardTestExpression returns fmlStmnt::GuardStatement
+		//    : '|=>' condition=Expression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'|=>' condition=Expression
@@ -9973,20 +12326,22 @@
 		private final RuleCall cStructuredDataTypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
 		////OtherDataTypeDefinitionImpl returns fmlType::DataTypeReference
-		////	: {fmlType::DataTypeReference}
-		////		name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
-		////		( support=PrimitiveType
-		////			( '[' multiplicity=DataTypeMultiplicity ']' )?
-		////		| typeref=[fmlType::DataType|ESUfid]
-		////			( '[' multiplicity=DataTypeMultiplicity ']' )?
-		////		)  typedef?=';'
-		////	;
-		//DataType fmlType::DataType:
-		//	DataTypeReference
-		//	| StructuredDataType;
+		////    : {fmlType::DataTypeReference}
+		////        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		////        ( support=PrimitiveType
+		////            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		////        | typeref=[fmlType::DataType|ESUfid]
+		////            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		////        )  typedef?=';'
+		////    ;
+		//DataType returns fmlType::DataType
+		//    : DataTypeReference
+		//    | StructuredDataType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//DataTypeReference | StructuredDataType
+		//DataTypeReference
+		//   | StructuredDataType
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//DataTypeReference
@@ -10002,13 +12357,16 @@
 		private final RuleCall cIntervalTypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cCollectionTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		
-		//SimpleDataType fmlType::DataType:
-		//	PrimitiveType
-		//	| IntervalType
-		//	| CollectionType;
+		//SimpleDataType returns fmlType::DataType
+		//    : PrimitiveType
+		//    | IntervalType
+		//    | CollectionType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//PrimitiveType | IntervalType | CollectionType
+		//PrimitiveType
+		//   | IntervalType
+		//   | CollectionType
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//PrimitiveType
@@ -10028,14 +12386,18 @@
 		private final RuleCall cUnionTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		private final RuleCall cChoiceTypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		
-		//StructuredDataType fmlType::DataType:
-		//	EnumerationType
-		//	| StructureType
-		//	| UnionType
-		//	| ChoiceType;
+		//StructuredDataType returns fmlType::DataType
+		//    : EnumerationType
+		//    | StructureType
+		//    | UnionType
+		//    | ChoiceType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//EnumerationType | StructureType | UnionType | ChoiceType
+		//EnumerationType
+		//   | StructureType
+		//   | UnionType
+		//   | ChoiceType
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//EnumerationType
@@ -10057,49 +12419,51 @@
 		private final RuleCall cOtherPrimitiveTypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
 		////PrimitiveType returns fmlType::PrimitiveType
-		////	: kind=NumberPrimitiveTypeKind ( '<' ( 'bit:' )? bitSize = EInt '>' )?
-		////	| kind=OtherPrimitiveKind
-		////	;
+		////    : kind=NumberPrimitiveTypeKind ( '<' ( 'bit:' )? bitSize = EInt '>' )?
+		////    | kind=OtherPrimitiveKind
+		////    ;
 		////
 		////enum OtherPrimitiveKind returns fmlType::PrimitiveTypeKind
-		////	: BOOLEAN   = 'boolean'
-		////	| BOOLEAN   = 'bool'
-		////	| CHAR      = 'char'
-		////	| STRING    = 'string'
-		////	| BUFFER    = 'buffer'
-		////	| MESSAGE   = 'message'
-		////	| PORT      = 'port'
-		////	| MACHINE   = 'machine'
-		////	;
+		////    : BOOLEAN   = 'boolean'
+		////    | BOOLEAN   = 'bool'
+		////    | CHAR      = 'char'
+		////    | STRING    = 'string'
+		////    | BUFFER    = 'buffer'
+		////    | MESSAGE   = 'message'
+		////    | PORT      = 'port'
+		////    | MACHINE   = 'machine'
+		////    ;
 		////
 		////
 		////enum NumberPrimitiveTypeKind returns fmlType::PrimitiveTypeKind
-		////	: INTEGER   = 'integer'
-		////	| RATIONAL  = 'rational'
-		////	| FLOAT     = 'float'
-		////	| DOUBLE    = 'double'
-		////	| REAL      = 'real'
+		////    : INTEGER   = 'integer'
+		////    | RATIONAL  = 'rational'
+		////    | FLOAT     = 'float'
+		////    | DOUBLE    = 'double'
+		////    | REAL      = 'real'
 		////
-		////	| TIME      = 'time'
+		////    | TIME      = 'time'
 		////
-		////	| UINTEGER  = 'uinteger'
-		////	| URATIONAL = 'urational'
-		////	| UFLOAT    = 'ufloat'
-		////	| UDOUBLE   = 'udouble'
-		////	| UREAL     = 'ureal'
+		////    | UINTEGER  = 'uinteger'
+		////    | URATIONAL = 'urational'
+		////    | UFLOAT    = 'ufloat'
+		////    | UDOUBLE   = 'udouble'
+		////    | UREAL     = 'ureal'
 		////
-		////	| INT       = 'int'
-		////	| RAT       = 'rat'
+		////    | INT       = 'int'
+		////    | RAT       = 'rat'
 		////
-		////	| UINT      = 'uint'
-		////	| URAT      = 'urat'
-		////	;
-		//PrimitiveType fmlType::PrimitiveType:
-		//	PrimitiveNumberType
-		//	| OtherPrimitiveType;
+		////    | UINT      = 'uint'
+		////    | URAT      = 'urat'
+		////    ;
+		//PrimitiveType returns fmlType::PrimitiveType
+		//    : PrimitiveNumberType
+		//    | OtherPrimitiveType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//PrimitiveNumberType | OtherPrimitiveType
+		//PrimitiveNumberType
+		//   | OtherPrimitiveType
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//PrimitiveNumberType
@@ -10117,15 +12481,20 @@
 		private final RuleCall cPrimitiveRealTypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		private final RuleCall cPrimitiveTimeTypeParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
 		
-		//PrimitiveNumberType fmlType::PrimitiveNumberType:
-		//	PrimitiveIntegerType
-		//	| PrimitiveRationalType
-		//	| PrimitiveFloatType
-		//	| PrimitiveRealType
-		//	| PrimitiveTimeType;
+		//PrimitiveNumberType returns fmlType::PrimitiveNumberType
+		//    : PrimitiveIntegerType
+		//    | PrimitiveRationalType
+		//    | PrimitiveFloatType
+		//    | PrimitiveRealType
+		//    | PrimitiveTimeType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//PrimitiveIntegerType | PrimitiveRationalType | PrimitiveFloatType | PrimitiveRealType | PrimitiveTimeType
+		//PrimitiveIntegerType
+		//   | PrimitiveRationalType
+		//   | PrimitiveFloatType
+		//   | PrimitiveRealType
+		//   | PrimitiveTimeType
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//PrimitiveIntegerType
@@ -10168,33 +12537,57 @@
 		private final RuleCall cSizeEIntParserRuleCall_3_1_2_0 = (RuleCall)cSizeAssignment_3_1_2.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
 		
-		//PrimitiveIntegerType fmlType::PrimitiveIntegerType:
-		//	{fmlType::PrimitiveIntegerType} sign=PrimitiveNumberSign?
-		//	name=('integer'
-		//	| 'uinteger'
-		//	| 'pos_integer'
-		//	| 'int'
-		//	| 'uint') (':' size=EInt
-		//	| '<' 'size:'? size=EInt '>')?;
+		//PrimitiveIntegerType returns fmlType::PrimitiveIntegerType
+		//    : { fmlType::PrimitiveIntegerType }
+		//        ( sign=PrimitiveNumberSign )?
+		//        name=( 'integer'
+		//        | 'uinteger'
+		//        | 'pos_integer'
+		//        | 'int'
+		//        | 'uint'
+		//        )
+		//        ( ':' size = EInt
+		//            | '<' ( 'size:' )? size = EInt '>'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveIntegerType} sign=PrimitiveNumberSign? name=('integer' | 'uinteger' | 'pos_integer' | 'int' | 'uint')
-		//(':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//{ fmlType::PrimitiveIntegerType }
+		//       ( sign=PrimitiveNumberSign )?
+		//       name=( 'integer'
+		//       | 'uinteger'
+		//       | 'pos_integer'
+		//       | 'int'
+		//       | 'uint'
+		//       )
+		//       ( ':' size = EInt
+		//           | '<' ( 'size:' )? size = EInt '>'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveIntegerType}
+		//{ fmlType::PrimitiveIntegerType }
 		public Action getPrimitiveIntegerTypeAction_0() { return cPrimitiveIntegerTypeAction_0; }
 		
-		//sign=PrimitiveNumberSign?
+		//( sign=PrimitiveNumberSign )?
 		public Assignment getSignAssignment_1() { return cSignAssignment_1; }
 		
 		//PrimitiveNumberSign
 		public RuleCall getSignPrimitiveNumberSignEnumRuleCall_1_0() { return cSignPrimitiveNumberSignEnumRuleCall_1_0; }
 		
-		//name=('integer' | 'uinteger' | 'pos_integer' | 'int' | 'uint')
+		//name=( 'integer'
+		//| 'uinteger'
+		//| 'pos_integer'
+		//| 'int'
+		//| 'uint'
+		//)
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
 		
-		//('integer' | 'uinteger' | 'pos_integer' | 'int' | 'uint')
+		//( 'integer'
+		//        | 'uinteger'
+		//        | 'pos_integer'
+		//        | 'int'
+		//        | 'uint'
+		//        )
 		public Alternatives getNameAlternatives_2_0() { return cNameAlternatives_2_0; }
 		
 		//'integer'
@@ -10212,31 +12605,33 @@
 		//'uint'
 		public Keyword getNameUintKeyword_2_0_4() { return cNameUintKeyword_2_0_4; }
 		
-		//(':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//( ':' size = EInt
+		//    | '<' ( 'size:' )? size = EInt '>'
+		//)?
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//':' size=EInt
+		//':' size = EInt
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//':'
 		public Keyword getColonKeyword_3_0_0() { return cColonKeyword_3_0_0; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_0_1() { return cSizeAssignment_3_0_1; }
 		
 		//EInt
 		public RuleCall getSizeEIntParserRuleCall_3_0_1_0() { return cSizeEIntParserRuleCall_3_0_1_0; }
 		
-		//'<' 'size:'? size=EInt '>'
+		//'<' ( 'size:' )? size = EInt '>'
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_3_1_0() { return cLessThanSignKeyword_3_1_0; }
 		
-		//'size:'?
+		//( 'size:' )?
 		public Keyword getSizeKeyword_3_1_1() { return cSizeKeyword_3_1_1; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_1_2() { return cSizeAssignment_3_1_2; }
 		
 		//EInt
@@ -10270,33 +12665,57 @@
 		private final RuleCall cSizeEIntParserRuleCall_3_1_2_0 = (RuleCall)cSizeAssignment_3_1_2.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
 		
-		//PrimitiveRationalType fmlType::PrimitiveRationalType:
-		//	{fmlType::PrimitiveRationalType} sign=PrimitiveNumberSign?
-		//	name=('rational'
-		//	| 'urational'
-		//	| 'pos_rational'
-		//	| 'rat'
-		//	| 'urat') (':' size=EInt
-		//	| '<' 'size:'? size=EInt '>')?;
+		//PrimitiveRationalType returns fmlType::PrimitiveRationalType
+		//    : { fmlType::PrimitiveRationalType }
+		//        ( sign=PrimitiveNumberSign )?
+		//        name=( 'rational'
+		//        | 'urational'
+		//        | 'pos_rational'
+		//        | 'rat'
+		//        | 'urat'
+		//        )
+		//        ( ':' size = EInt
+		//            | '<' ( 'size:' )? size = EInt '>'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveRationalType} sign=PrimitiveNumberSign? name=('rational' | 'urational' | 'pos_rational' | 'rat' |
-		//'urat') (':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//{ fmlType::PrimitiveRationalType }
+		//       ( sign=PrimitiveNumberSign )?
+		//       name=( 'rational'
+		//       | 'urational'
+		//       | 'pos_rational'
+		//       | 'rat'
+		//       | 'urat'
+		//       )
+		//       ( ':' size = EInt
+		//           | '<' ( 'size:' )? size = EInt '>'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveRationalType}
+		//{ fmlType::PrimitiveRationalType }
 		public Action getPrimitiveRationalTypeAction_0() { return cPrimitiveRationalTypeAction_0; }
 		
-		//sign=PrimitiveNumberSign?
+		//( sign=PrimitiveNumberSign )?
 		public Assignment getSignAssignment_1() { return cSignAssignment_1; }
 		
 		//PrimitiveNumberSign
 		public RuleCall getSignPrimitiveNumberSignEnumRuleCall_1_0() { return cSignPrimitiveNumberSignEnumRuleCall_1_0; }
 		
-		//name=('rational' | 'urational' | 'pos_rational' | 'rat' | 'urat')
+		//name=( 'rational'
+		//| 'urational'
+		//| 'pos_rational'
+		//| 'rat'
+		//| 'urat'
+		//)
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
 		
-		//('rational' | 'urational' | 'pos_rational' | 'rat' | 'urat')
+		//( 'rational'
+		//        | 'urational'
+		//        | 'pos_rational'
+		//        | 'rat'
+		//        | 'urat'
+		//        )
 		public Alternatives getNameAlternatives_2_0() { return cNameAlternatives_2_0; }
 		
 		//'rational'
@@ -10314,31 +12733,33 @@
 		//'urat'
 		public Keyword getNameUratKeyword_2_0_4() { return cNameUratKeyword_2_0_4; }
 		
-		//(':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//( ':' size = EInt
+		//    | '<' ( 'size:' )? size = EInt '>'
+		//)?
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//':' size=EInt
+		//':' size = EInt
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//':'
 		public Keyword getColonKeyword_3_0_0() { return cColonKeyword_3_0_0; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_0_1() { return cSizeAssignment_3_0_1; }
 		
 		//EInt
 		public RuleCall getSizeEIntParserRuleCall_3_0_1_0() { return cSizeEIntParserRuleCall_3_0_1_0; }
 		
-		//'<' 'size:'? size=EInt '>'
+		//'<' ( 'size:' )? size = EInt '>'
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_3_1_0() { return cLessThanSignKeyword_3_1_0; }
 		
-		//'size:'?
+		//( 'size:' )?
 		public Keyword getSizeKeyword_3_1_1() { return cSizeKeyword_3_1_1; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_1_2() { return cSizeAssignment_3_1_2; }
 		
 		//EInt
@@ -10372,33 +12793,57 @@
 		private final RuleCall cSizeEIntParserRuleCall_3_1_2_0 = (RuleCall)cSizeAssignment_3_1_2.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
 		
-		//PrimitiveFloatType fmlType::PrimitiveFloatType:
-		//	{fmlType::PrimitiveFloatType} sign=PrimitiveNumberSign?
-		//	name=('float'
-		//	| 'ufloat'
-		//	| 'pos_float'
-		//	| 'double'
-		//	| 'udouble') (':' size=EInt
-		//	| '<' 'size:'? size=EInt '>')?;
+		//PrimitiveFloatType returns fmlType::PrimitiveFloatType
+		//    : { fmlType::PrimitiveFloatType }
+		//        ( sign=PrimitiveNumberSign )?
+		//        name=( 'float'
+		//        | 'ufloat'
+		//        | 'pos_float'
+		//        | 'double'
+		//        | 'udouble'
+		//        )
+		//        ( ':' size = EInt
+		//            | '<' ( 'size:' )? size = EInt '>'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveFloatType} sign=PrimitiveNumberSign? name=('float' | 'ufloat' | 'pos_float' | 'double' | 'udouble')
-		//(':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//{ fmlType::PrimitiveFloatType }
+		//       ( sign=PrimitiveNumberSign )?
+		//       name=( 'float'
+		//       | 'ufloat'
+		//       | 'pos_float'
+		//       | 'double'
+		//       | 'udouble'
+		//       )
+		//       ( ':' size = EInt
+		//           | '<' ( 'size:' )? size = EInt '>'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveFloatType}
+		//{ fmlType::PrimitiveFloatType }
 		public Action getPrimitiveFloatTypeAction_0() { return cPrimitiveFloatTypeAction_0; }
 		
-		//sign=PrimitiveNumberSign?
+		//( sign=PrimitiveNumberSign )?
 		public Assignment getSignAssignment_1() { return cSignAssignment_1; }
 		
 		//PrimitiveNumberSign
 		public RuleCall getSignPrimitiveNumberSignEnumRuleCall_1_0() { return cSignPrimitiveNumberSignEnumRuleCall_1_0; }
 		
-		//name=('float' | 'ufloat' | 'pos_float' | 'double' | 'udouble')
+		//name=( 'float'
+		//| 'ufloat'
+		//| 'pos_float'
+		//| 'double'
+		//| 'udouble'
+		//)
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
 		
-		//('float' | 'ufloat' | 'pos_float' | 'double' | 'udouble')
+		//( 'float'
+		//        | 'ufloat'
+		//        | 'pos_float'
+		//        | 'double'
+		//        | 'udouble'
+		//        )
 		public Alternatives getNameAlternatives_2_0() { return cNameAlternatives_2_0; }
 		
 		//'float'
@@ -10416,31 +12861,33 @@
 		//'udouble'
 		public Keyword getNameUdoubleKeyword_2_0_4() { return cNameUdoubleKeyword_2_0_4; }
 		
-		//(':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//( ':' size = EInt
+		//    | '<' ( 'size:' )? size = EInt '>'
+		//)?
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//':' size=EInt
+		//':' size = EInt
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//':'
 		public Keyword getColonKeyword_3_0_0() { return cColonKeyword_3_0_0; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_0_1() { return cSizeAssignment_3_0_1; }
 		
 		//EInt
 		public RuleCall getSizeEIntParserRuleCall_3_0_1_0() { return cSizeEIntParserRuleCall_3_0_1_0; }
 		
-		//'<' 'size:'? size=EInt '>'
+		//'<' ( 'size:' )? size = EInt '>'
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_3_1_0() { return cLessThanSignKeyword_3_1_0; }
 		
-		//'size:'?
+		//( 'size:' )?
 		public Keyword getSizeKeyword_3_1_1() { return cSizeKeyword_3_1_1; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_1_2() { return cSizeAssignment_3_1_2; }
 		
 		//EInt
@@ -10472,31 +12919,49 @@
 		private final RuleCall cSizeEIntParserRuleCall_3_1_2_0 = (RuleCall)cSizeAssignment_3_1_2.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_3_1_3 = (Keyword)cGroup_3_1.eContents().get(3);
 		
-		//PrimitiveRealType fmlType::PrimitiveRealType:
-		//	{fmlType::PrimitiveRealType} sign=PrimitiveNumberSign?
-		//	name=('real'
-		//	| 'ureal'
-		//	| 'pos_real') (':' size=EInt
-		//	| '<' 'size:'? size=EInt '>')?;
+		//PrimitiveRealType returns fmlType::PrimitiveRealType
+		//    : { fmlType::PrimitiveRealType }
+		//        ( sign=PrimitiveNumberSign )?
+		//        name=( 'real'
+		//        | 'ureal'
+		//        | 'pos_real'
+		//        )
+		//        ( ':' size = EInt
+		//            | '<' ( 'size:' )? size = EInt '>'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveRealType} sign=PrimitiveNumberSign? name=('real' | 'ureal' | 'pos_real') (':' size=EInt | '<'
-		//'size:'? size=EInt '>')?
+		//{ fmlType::PrimitiveRealType }
+		//       ( sign=PrimitiveNumberSign )?
+		//       name=( 'real'
+		//       | 'ureal'
+		//       | 'pos_real'
+		//       )
+		//       ( ':' size = EInt
+		//           | '<' ( 'size:' )? size = EInt '>'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveRealType}
+		//{ fmlType::PrimitiveRealType }
 		public Action getPrimitiveRealTypeAction_0() { return cPrimitiveRealTypeAction_0; }
 		
-		//sign=PrimitiveNumberSign?
+		//( sign=PrimitiveNumberSign )?
 		public Assignment getSignAssignment_1() { return cSignAssignment_1; }
 		
 		//PrimitiveNumberSign
 		public RuleCall getSignPrimitiveNumberSignEnumRuleCall_1_0() { return cSignPrimitiveNumberSignEnumRuleCall_1_0; }
 		
-		//name=('real' | 'ureal' | 'pos_real')
+		//name=( 'real'
+		//| 'ureal'
+		//| 'pos_real'
+		//)
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
 		
-		//('real' | 'ureal' | 'pos_real')
+		//( 'real'
+		//        | 'ureal'
+		//        | 'pos_real'
+		//        )
 		public Alternatives getNameAlternatives_2_0() { return cNameAlternatives_2_0; }
 		
 		//'real'
@@ -10508,31 +12973,33 @@
 		//'pos_real'
 		public Keyword getNamePos_realKeyword_2_0_2() { return cNamePos_realKeyword_2_0_2; }
 		
-		//(':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//( ':' size = EInt
+		//    | '<' ( 'size:' )? size = EInt '>'
+		//)?
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//':' size=EInt
+		//':' size = EInt
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//':'
 		public Keyword getColonKeyword_3_0_0() { return cColonKeyword_3_0_0; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_0_1() { return cSizeAssignment_3_0_1; }
 		
 		//EInt
 		public RuleCall getSizeEIntParserRuleCall_3_0_1_0() { return cSizeEIntParserRuleCall_3_0_1_0; }
 		
-		//'<' 'size:'? size=EInt '>'
+		//'<' ( 'size:' )? size = EInt '>'
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_3_1_0() { return cLessThanSignKeyword_3_1_0; }
 		
-		//'size:'?
+		//( 'size:' )?
 		public Keyword getSizeKeyword_3_1_1() { return cSizeKeyword_3_1_1; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_3_1_2() { return cSizeAssignment_3_1_2; }
 		
 		//EInt
@@ -10568,29 +13035,48 @@
 		private final Assignment cSupportAssignment_1_2_1 = (Assignment)cAlternatives_1_2.eContents().get(1);
 		private final RuleCall cSupportPrimitiveTimeNumberTypeParserRuleCall_1_2_1_0 = (RuleCall)cSupportAssignment_1_2_1.eContents().get(0);
 		
-		//PrimitiveTimeType fmlType::PrimitiveTimeType:
-		//	{fmlType::PrimitiveTimeType}
-		//	'time' ('<' support=PrimitiveTimeNumberType '>'
-		//	| support=PrimitiveTimeNumberType)?
-		//	| {fmlType::PrimitiveTimeType} clock?='clock' ('<' support=PrimitiveTimeNumberType '>'
-		//	| support=PrimitiveTimeNumberType)?;
+		//PrimitiveTimeType returns fmlType::PrimitiveTimeType
+		//    : { fmlType::PrimitiveTimeType }
+		//        'time'
+		//        ( '<' support=PrimitiveTimeNumberType '>'
+		//        | support=PrimitiveTimeNumberType
+		//        )?
+		//    | { fmlType::PrimitiveTimeType }
+		//        clock?='clock'
+		//        ( '<' support=PrimitiveTimeNumberType '>'
+		//        | support=PrimitiveTimeNumberType
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveTimeType} 'time' ('<' support=PrimitiveTimeNumberType '>' | support=PrimitiveTimeNumberType)? |
-		//{fmlType::PrimitiveTimeType} clock?='clock' ('<' support=PrimitiveTimeNumberType '>' |
-		//support=PrimitiveTimeNumberType)?
+		//{ fmlType::PrimitiveTimeType }
+		//       'time'
+		//       ( '<' support=PrimitiveTimeNumberType '>'
+		//       | support=PrimitiveTimeNumberType
+		//       )?
+		//   | { fmlType::PrimitiveTimeType }
+		//       clock?='clock'
+		//       ( '<' support=PrimitiveTimeNumberType '>'
+		//       | support=PrimitiveTimeNumberType
+		//       )?
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{fmlType::PrimitiveTimeType} 'time' ('<' support=PrimitiveTimeNumberType '>' | support=PrimitiveTimeNumberType)?
+		//{ fmlType::PrimitiveTimeType }
+		//       'time'
+		//       ( '<' support=PrimitiveTimeNumberType '>'
+		//       | support=PrimitiveTimeNumberType
+		//       )?
 		public Group getGroup_0() { return cGroup_0; }
 		
-		//{fmlType::PrimitiveTimeType}
+		//{ fmlType::PrimitiveTimeType }
 		public Action getPrimitiveTimeTypeAction_0_0() { return cPrimitiveTimeTypeAction_0_0; }
 		
 		//'time'
 		public Keyword getTimeKeyword_0_1() { return cTimeKeyword_0_1; }
 		
-		//('<' support=PrimitiveTimeNumberType '>' | support=PrimitiveTimeNumberType)?
+		//( '<' support=PrimitiveTimeNumberType '>'
+		//| support=PrimitiveTimeNumberType
+		//)?
 		public Alternatives getAlternatives_0_2() { return cAlternatives_0_2; }
 		
 		//'<' support=PrimitiveTimeNumberType '>'
@@ -10614,10 +13100,14 @@
 		//PrimitiveTimeNumberType
 		public RuleCall getSupportPrimitiveTimeNumberTypeParserRuleCall_0_2_1_0() { return cSupportPrimitiveTimeNumberTypeParserRuleCall_0_2_1_0; }
 		
-		//{fmlType::PrimitiveTimeType} clock?='clock' ('<' support=PrimitiveTimeNumberType '>' | support=PrimitiveTimeNumberType)?
+		//{ fmlType::PrimitiveTimeType }
+		//       clock?='clock'
+		//       ( '<' support=PrimitiveTimeNumberType '>'
+		//       | support=PrimitiveTimeNumberType
+		//       )?
 		public Group getGroup_1() { return cGroup_1; }
 		
-		//{fmlType::PrimitiveTimeType}
+		//{ fmlType::PrimitiveTimeType }
 		public Action getPrimitiveTimeTypeAction_1_0() { return cPrimitiveTimeTypeAction_1_0; }
 		
 		//clock?='clock'
@@ -10626,7 +13116,9 @@
 		//'clock'
 		public Keyword getClockClockKeyword_1_1_0() { return cClockClockKeyword_1_1_0; }
 		
-		//('<' support=PrimitiveTimeNumberType '>' | support=PrimitiveTimeNumberType)?
+		//( '<' support=PrimitiveTimeNumberType '>'
+		//| support=PrimitiveTimeNumberType
+		//)?
 		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }
 		
 		//'<' support=PrimitiveTimeNumberType '>'
@@ -10658,14 +13150,18 @@
 		private final RuleCall cPrimitiveFloatTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		private final RuleCall cPrimitiveRealTypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		
-		//PrimitiveTimeNumberType fmlType::PrimitiveNumberType:
-		//	PrimitiveIntegerType
-		//	| PrimitiveRationalType
-		//	| PrimitiveFloatType
-		//	| PrimitiveRealType;
+		//PrimitiveTimeNumberType returns fmlType::PrimitiveNumberType
+		//    : PrimitiveIntegerType
+		//    | PrimitiveRationalType
+		//    | PrimitiveFloatType
+		//    | PrimitiveRealType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//PrimitiveIntegerType | PrimitiveRationalType | PrimitiveFloatType | PrimitiveRealType
+		//PrimitiveIntegerType
+		//   | PrimitiveRationalType
+		//   | PrimitiveFloatType
+		//   | PrimitiveRealType
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//PrimitiveIntegerType
@@ -10688,14 +13184,18 @@
 		private final RuleCall cPrimitiveStringTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		private final RuleCall cPrimitiveInstanceTypeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		
-		//OtherPrimitiveType fmlType::PrimitiveType:
-		//	PrimitiveBooleanType
-		//	| PrimitiveCharacterType
-		//	| PrimitiveStringType
-		//	| PrimitiveInstanceType;
+		//OtherPrimitiveType returns fmlType::PrimitiveType
+		//    : PrimitiveBooleanType
+		//    | PrimitiveCharacterType
+		//    | PrimitiveStringType
+		//    | PrimitiveInstanceType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//PrimitiveBooleanType | PrimitiveCharacterType | PrimitiveStringType | PrimitiveInstanceType
+		//PrimitiveBooleanType
+		//   | PrimitiveCharacterType
+		//   | PrimitiveStringType
+		//   | PrimitiveInstanceType
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//PrimitiveBooleanType
@@ -10719,20 +13219,23 @@
 		private final Keyword cNameBooleanKeyword_1_0_0 = (Keyword)cNameAlternatives_1_0.eContents().get(0);
 		private final Keyword cNameBoolKeyword_1_0_1 = (Keyword)cNameAlternatives_1_0.eContents().get(1);
 		
-		//PrimitiveBooleanType fmlType::PrimitiveBooleanType:
-		//	{fmlType::PrimitiveBooleanType} name=('boolean' | 'bool');
+		//PrimitiveBooleanType returns fmlType::PrimitiveBooleanType
+		//    : { fmlType::PrimitiveBooleanType }
+		//        name=( 'boolean'| 'bool' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveBooleanType} name=('boolean' | 'bool')
+		//{ fmlType::PrimitiveBooleanType }
+		//       name=( 'boolean'| 'bool' )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveBooleanType}
+		//{ fmlType::PrimitiveBooleanType }
 		public Action getPrimitiveBooleanTypeAction_0() { return cPrimitiveBooleanTypeAction_0; }
 		
-		//name=('boolean' | 'bool')
+		//name=( 'boolean'| 'bool' )
 		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
 		
-		//('boolean' | 'bool')
+		//( 'boolean'| 'bool' )
 		public Alternatives getNameAlternatives_1_0() { return cNameAlternatives_1_0; }
 		
 		//'boolean'
@@ -10747,14 +13250,15 @@
 		private final Action cPrimitiveCharacterTypeAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cCharKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//PrimitiveCharacterType fmlType::PrimitiveCharacterType:
-		//	{fmlType::PrimitiveCharacterType} 'char';
+		//PrimitiveCharacterType returns fmlType::PrimitiveCharacterType
+		//    : { fmlType::PrimitiveCharacterType } 'char'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveCharacterType} 'char'
+		//{ fmlType::PrimitiveCharacterType } 'char'
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveCharacterType}
+		//{ fmlType::PrimitiveCharacterType }
 		public Action getPrimitiveCharacterTypeAction_0() { return cPrimitiveCharacterTypeAction_0; }
 		
 		//'char'
@@ -10778,15 +13282,23 @@
 		private final RuleCall cSizeEIntParserRuleCall_2_1_2_0 = (RuleCall)cSizeAssignment_2_1_2.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
 		
-		//PrimitiveStringType fmlType::PrimitiveStringType:
-		//	{fmlType::PrimitiveStringType} name='string' (':' size=EInt
-		//	| '<' 'size:'? size=EInt '>')?;
+		//PrimitiveStringType returns fmlType::PrimitiveStringType
+		//    : { fmlType::PrimitiveStringType }
+		//        name='string'
+		//        ( ':' size = EInt
+		//        | '<' ( 'size:' )? size = EInt '>'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveStringType} name='string' (':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//{ fmlType::PrimitiveStringType }
+		//       name='string'
+		//       ( ':' size = EInt
+		//       | '<' ( 'size:' )? size = EInt '>'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveStringType}
+		//{ fmlType::PrimitiveStringType }
 		public Action getPrimitiveStringTypeAction_0() { return cPrimitiveStringTypeAction_0; }
 		
 		//name='string'
@@ -10795,31 +13307,33 @@
 		//'string'
 		public Keyword getNameStringKeyword_1_0() { return cNameStringKeyword_1_0; }
 		
-		//(':' size=EInt | '<' 'size:'? size=EInt '>')?
+		//( ':' size = EInt
+		//| '<' ( 'size:' )? size = EInt '>'
+		//)?
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//':' size=EInt
+		//':' size = EInt
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//':'
 		public Keyword getColonKeyword_2_0_0() { return cColonKeyword_2_0_0; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_2_0_1() { return cSizeAssignment_2_0_1; }
 		
 		//EInt
 		public RuleCall getSizeEIntParserRuleCall_2_0_1_0() { return cSizeEIntParserRuleCall_2_0_1_0; }
 		
-		//'<' 'size:'? size=EInt '>'
+		//'<' ( 'size:' )? size = EInt '>'
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_1_0() { return cLessThanSignKeyword_2_1_0; }
 		
-		//'size:'?
+		//( 'size:' )?
 		public Keyword getSizeKeyword_2_1_1() { return cSizeKeyword_2_1_1; }
 		
-		//size=EInt
+		//size = EInt
 		public Assignment getSizeAssignment_2_1_2() { return cSizeAssignment_2_1_2; }
 		
 		//EInt
@@ -10841,15 +13355,19 @@
 		private final RuleCall cModelNamedElementESIdentifierParserRuleCall_2_1_0_1 = (RuleCall)cModelNamedElementCrossReference_2_1_0.eContents().get(1);
 		private final Keyword cGreaterThanSignKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
 		
-		//PrimitiveInstanceType fmlType::PrimitiveInstanceType:
-		//	{fmlType::PrimitiveInstanceType} expected=PrimitiveInstanceKind ('<' model=[fmlCommon::NamedElement|ESIdentifier]
-		//	'>')?;
+		//PrimitiveInstanceType returns fmlType::PrimitiveInstanceType
+		//    : { fmlType::PrimitiveInstanceType }
+		//        expected=PrimitiveInstanceKind
+		//        ( '<' model=[fmlCommon::NamedElement|ESIdentifier] '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveInstanceType} expected=PrimitiveInstanceKind ('<' model=[fmlCommon::NamedElement|ESIdentifier] '>')?
+		//{ fmlType::PrimitiveInstanceType }
+		//       expected=PrimitiveInstanceKind
+		//       ( '<' model=[fmlCommon::NamedElement|ESIdentifier] '>' )?
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveInstanceType}
+		//{ fmlType::PrimitiveInstanceType }
 		public Action getPrimitiveInstanceTypeAction_0() { return cPrimitiveInstanceTypeAction_0; }
 		
 		//expected=PrimitiveInstanceKind
@@ -10858,7 +13376,7 @@
 		//PrimitiveInstanceKind
 		public RuleCall getExpectedPrimitiveInstanceKindEnumRuleCall_1_0() { return cExpectedPrimitiveInstanceKindEnumRuleCall_1_0; }
 		
-		//('<' model=[fmlCommon::NamedElement|ESIdentifier] '>')?
+		//( '<' model=[fmlCommon::NamedElement|ESIdentifier] '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -10900,15 +13418,26 @@
 		private final Keyword cRopenLeftSquareBracketKeyword_8_1_0 = (Keyword)cRopenAssignment_8_1.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_9 = (Keyword)cGroup.eContents().get(9);
 		
-		//IntervalType fmlType::IntervalType:
-		//	{fmlType::IntervalType} name='interval'
-		//	'<'
-		//	support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' | ropen?='[')
-		//	'>';
+		//IntervalType returns fmlType::IntervalType
+		//    : {fmlType::IntervalType}
+		//        name='interval'
+		//        '<'
+		//            support=PrimitiveNumberType
+		//            ( lopen?=']' | '[' )
+		//            infimum=Expression ',' supremum=Expression
+		//            ( ']' |  ropen?='[' )
+		//        '>'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::IntervalType} name='interval' '<' support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ','
-		//supremum=Expression (']' | ropen?='[') '>'
+		//{fmlType::IntervalType}
+		//       name='interval'
+		//       '<'
+		//           support=PrimitiveNumberType
+		//           ( lopen?=']' | '[' )
+		//           infimum=Expression ',' supremum=Expression
+		//           ( ']' |  ropen?='[' )
+		//       '>'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::IntervalType}
@@ -10929,7 +13458,7 @@
 		//PrimitiveNumberType
 		public RuleCall getSupportPrimitiveNumberTypeParserRuleCall_3_0() { return cSupportPrimitiveNumberTypeParserRuleCall_3_0; }
 		
-		//(lopen?=']' | '[')
+		//( lopen?=']' | '[' )
 		public Alternatives getAlternatives_4() { return cAlternatives_4; }
 		
 		//lopen?=']'
@@ -10956,7 +13485,7 @@
 		//Expression
 		public RuleCall getSupremumExpressionParserRuleCall_7_0() { return cSupremumExpressionParserRuleCall_7_0; }
 		
-		//(']' | ropen?='[')
+		//( ']' |  ropen?='[' )
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
 		//']'
@@ -11002,24 +13531,36 @@
 		private final Keyword cGreaterThanSignKeyword_13 = (Keyword)cGroup.eContents().get(13);
 		private final Keyword cSemicolonKeyword_14 = (Keyword)cGroup.eContents().get(14);
 		
-		//IntervalTypeDefinition fmlType::IntervalType:
-		//	{fmlType::IntervalType} visibility=VisibilityKind? 'type'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'interval'
-		//	'<'
-		//	support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' | ropen?='[')
-		//	'>' ';';
+		//IntervalTypeDefinition returns fmlType::IntervalType
+		//    : {fmlType::IntervalType}
+		//        ( visibility=VisibilityKind )? 'type'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        'interval'
+		//        '<'
+		//            support=PrimitiveNumberType
+		//            ( lopen?=']' | '[' )
+		//            infimum=Expression ',' supremum=Expression
+		//            ( ']' |  ropen?='[' )
+		//        '>' ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::IntervalType} visibility=VisibilityKind? 'type' name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//'interval' '<' support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' |
-		//ropen?='[') '>' ';'
+		//{fmlType::IntervalType}
+		//       ( visibility=VisibilityKind )? 'type'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       'interval'
+		//       '<'
+		//           support=PrimitiveNumberType
+		//           ( lopen?=']' | '[' )
+		//           infimum=Expression ',' supremum=Expression
+		//           ( ']' |  ropen?='[' )
+		//       '>' ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::IntervalType}
 		public Action getIntervalTypeAction_0() { return cIntervalTypeAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -11034,7 +13575,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -11052,7 +13593,7 @@
 		//PrimitiveNumberType
 		public RuleCall getSupportPrimitiveNumberTypeParserRuleCall_7_0() { return cSupportPrimitiveNumberTypeParserRuleCall_7_0; }
 		
-		//(lopen?=']' | '[')
+		//( lopen?=']' | '[' )
 		public Alternatives getAlternatives_8() { return cAlternatives_8; }
 		
 		//lopen?=']'
@@ -11079,7 +13620,7 @@
 		//Expression
 		public RuleCall getSupremumExpressionParserRuleCall_11_0() { return cSupremumExpressionParserRuleCall_11_0; }
 		
-		//(']' | ropen?='[')
+		//( ']' |  ropen?='[' )
 		public Alternatives getAlternatives_12() { return cAlternatives_12; }
 		
 		//']'
@@ -11125,16 +13666,28 @@
 		private final Keyword cGreaterThanSignKeyword_11 = (Keyword)cGroup.eContents().get(11);
 		private final Keyword cSemicolonKeyword_12 = (Keyword)cGroup.eContents().get(12);
 		
-		//IntervalTypeDefinitionImpl fmlType::IntervalType:
-		//	{fmlType::IntervalType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'interval'
-		//	'<'
-		//	support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' | ropen?='[')
-		//	'>' ';';
+		//IntervalTypeDefinitionImpl returns fmlType::IntervalType
+		//    : {fmlType::IntervalType}
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        'interval'
+		//        '<'
+		//            support=PrimitiveNumberType
+		//            ( lopen?=']' | '[' )
+		//            infimum=Expression ',' supremum=Expression
+		//            ( ']' |  ropen?='[' )
+		//        '>' ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::IntervalType} name=ESIdentifier unrestrictedName=UnrestrictedName? 'interval' '<' support=PrimitiveNumberType
-		//(lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' | ropen?='[') '>' ';'
+		//{fmlType::IntervalType}
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       'interval'
+		//       '<'
+		//           support=PrimitiveNumberType
+		//           ( lopen?=']' | '[' )
+		//           infimum=Expression ',' supremum=Expression
+		//           ( ']' |  ropen?='[' )
+		//       '>' ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::IntervalType}
@@ -11146,7 +13699,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_1_0() { return cNameESIdentifierParserRuleCall_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
@@ -11164,7 +13717,7 @@
 		//PrimitiveNumberType
 		public RuleCall getSupportPrimitiveNumberTypeParserRuleCall_5_0() { return cSupportPrimitiveNumberTypeParserRuleCall_5_0; }
 		
-		//(lopen?=']' | '[')
+		//( lopen?=']' | '[' )
 		public Alternatives getAlternatives_6() { return cAlternatives_6; }
 		
 		//lopen?=']'
@@ -11191,7 +13744,7 @@
 		//Expression
 		public RuleCall getSupremumExpressionParserRuleCall_9_0() { return cSupremumExpressionParserRuleCall_9_0; }
 		
-		//(']' | ropen?='[')
+		//( ']' |  ropen?='[' )
 		public Alternatives getAlternatives_10() { return cAlternatives_10; }
 		
 		//']'
@@ -11231,25 +13784,37 @@
 		//// TODO
 		//// mettre à jour la grammaire par rapport au noyau, i.e.
 		//// CollectionKind | CollectionKind< size > | CollectionKind< type , size >
-		//CollectionType fmlType::CollectionType:
-		//	{fmlType::CollectionType} container=CollectionKind ('<'
-		//	support=DataType (',' (size=EInt | unbounded?='*'))?
-		//	'>')?;
+		//CollectionType returns fmlType::CollectionType
+		//    : {fmlType::CollectionType}
+		//        container = CollectionKind
+		//        ( '<'
+		//            support=DataType
+		//            ( ',' ( size=EInt | unbounded?='*' ) )?
+		//        '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::CollectionType} container=CollectionKind ('<' support=DataType (',' (size=EInt | unbounded?='*'))? '>')?
+		//{fmlType::CollectionType}
+		//       container = CollectionKind
+		//       ( '<'
+		//           support=DataType
+		//           ( ',' ( size=EInt | unbounded?='*' ) )?
+		//       '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::CollectionType}
 		public Action getCollectionTypeAction_0() { return cCollectionTypeAction_0; }
 		
-		//container=CollectionKind
+		//container = CollectionKind
 		public Assignment getContainerAssignment_1() { return cContainerAssignment_1; }
 		
 		//CollectionKind
 		public RuleCall getContainerCollectionKindEnumRuleCall_1_0() { return cContainerCollectionKindEnumRuleCall_1_0; }
 		
-		//('<' support=DataType (',' (size=EInt | unbounded?='*'))? '>')?
+		//( '<'
+		//    support=DataType
+		//    ( ',' ( size=EInt | unbounded?='*' ) )?
+		//'>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -11261,13 +13826,13 @@
 		//DataType
 		public RuleCall getSupportDataTypeParserRuleCall_2_1_0() { return cSupportDataTypeParserRuleCall_2_1_0; }
 		
-		//(',' (size=EInt | unbounded?='*'))?
+		//( ',' ( size=EInt | unbounded?='*' ) )?
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//','
 		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
 		
-		//(size=EInt | unbounded?='*')
+		//( size=EInt | unbounded?='*' )
 		public Alternatives getAlternatives_2_2_1() { return cAlternatives_2_2_1; }
 		
 		//size=EInt
@@ -11311,23 +13876,32 @@
 		private final Keyword cGreaterThanSignKeyword_9 = (Keyword)cGroup.eContents().get(9);
 		private final Keyword cSemicolonKeyword_10 = (Keyword)cGroup.eContents().get(10);
 		
-		//CollectionTypeDefinition fmlType::CollectionType:
-		//	{fmlType::CollectionType} visibility=VisibilityKind? 'type'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	container=CollectionKind
-		//	'<'
-		//	support=DataType (',' (size=EInt | unbounded?='*'))?
-		//	'>' ';';
+		//CollectionTypeDefinition returns fmlType::CollectionType
+		//    : {fmlType::CollectionType}
+		//        ( visibility=VisibilityKind )? 'type'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        container = CollectionKind
+		//        '<'
+		//            support=DataType
+		//            ( ',' ( size=EInt | unbounded?='*' ) )?
+		//        '>' ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::CollectionType} visibility=VisibilityKind? 'type' name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//container=CollectionKind '<' support=DataType (',' (size=EInt | unbounded?='*'))? '>' ';'
+		//{fmlType::CollectionType}
+		//       ( visibility=VisibilityKind )? 'type'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       container = CollectionKind
+		//       '<'
+		//           support=DataType
+		//           ( ',' ( size=EInt | unbounded?='*' ) )?
+		//       '>' ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::CollectionType}
 		public Action getCollectionTypeAction_0() { return cCollectionTypeAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -11342,13 +13916,13 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//container=CollectionKind
+		//container = CollectionKind
 		public Assignment getContainerAssignment_5() { return cContainerAssignment_5; }
 		
 		//CollectionKind
@@ -11363,13 +13937,13 @@
 		//DataType
 		public RuleCall getSupportDataTypeParserRuleCall_7_0() { return cSupportDataTypeParserRuleCall_7_0; }
 		
-		//(',' (size=EInt | unbounded?='*'))?
+		//( ',' ( size=EInt | unbounded?='*' ) )?
 		public Group getGroup_8() { return cGroup_8; }
 		
 		//','
 		public Keyword getCommaKeyword_8_0() { return cCommaKeyword_8_0; }
 		
-		//(size=EInt | unbounded?='*')
+		//( size=EInt | unbounded?='*' )
 		public Alternatives getAlternatives_8_1() { return cAlternatives_8_1; }
 		
 		//size=EInt
@@ -11413,16 +13987,24 @@
 		private final Keyword cGreaterThanSignKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		
-		//CollectionTypeDefinitionImpl fmlType::CollectionType:
-		//	{fmlType::CollectionType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	container=CollectionKind
-		//	'<'
-		//	support=DataType (',' (size=EInt | unbounded?='*'))?
-		//	'>' ';';
+		//CollectionTypeDefinitionImpl returns fmlType::CollectionType
+		//    : {fmlType::CollectionType}
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        container = CollectionKind
+		//        '<'
+		//            support=DataType
+		//            ( ',' ( size=EInt | unbounded?='*' ) )?
+		//        '>' ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::CollectionType} name=ESIdentifier unrestrictedName=UnrestrictedName? container=CollectionKind '<'
-		//support=DataType (',' (size=EInt | unbounded?='*'))? '>' ';'
+		//{fmlType::CollectionType}
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       container = CollectionKind
+		//       '<'
+		//           support=DataType
+		//           ( ',' ( size=EInt | unbounded?='*' ) )?
+		//       '>' ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::CollectionType}
@@ -11434,13 +14016,13 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_1_0() { return cNameESIdentifierParserRuleCall_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_2_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_2_0; }
 		
-		//container=CollectionKind
+		//container = CollectionKind
 		public Assignment getContainerAssignment_3() { return cContainerAssignment_3; }
 		
 		//CollectionKind
@@ -11455,13 +14037,13 @@
 		//DataType
 		public RuleCall getSupportDataTypeParserRuleCall_5_0() { return cSupportDataTypeParserRuleCall_5_0; }
 		
-		//(',' (size=EInt | unbounded?='*'))?
+		//( ',' ( size=EInt | unbounded?='*' ) )?
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//','
 		public Keyword getCommaKeyword_6_0() { return cCommaKeyword_6_0; }
 		
-		//(size=EInt | unbounded?='*')
+		//( size=EInt | unbounded?='*' )
 		public Alternatives getAlternatives_6_1() { return cAlternatives_6_1; }
 		
 		//size=EInt
@@ -11503,16 +14085,20 @@
 		private final RuleCall cLiteralEnumerationLiteralParserRuleCall_5_1_0 = (RuleCall)cLiteralAssignment_5_1.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
-		//EnumerationType fmlType::EnumerationType:
-		//	{fmlType::EnumerationType}
-		//	'enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
-		//	'{'
-		//	literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)*
-		//	'}';
+		//EnumerationType returns fmlType::EnumerationType
+		//    : {fmlType::EnumerationType}
+		//        'enum'  ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+		//        '{'
+		//            literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::EnumerationType} 'enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')? '{'
-		//literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)* '}'
+		//{fmlType::EnumerationType}
+		//       'enum'  ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+		//       '{'
+		//           literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::EnumerationType}
@@ -11521,13 +14107,13 @@
 		//'enum'
 		public Keyword getEnumKeyword_1() { return cEnumKeyword_1; }
 		
-		//('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
+		//( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//'super:'?
+		//( 'super:' )?
 		public Keyword getSuperKeyword_2_1() { return cSuperKeyword_2_1; }
 		
 		//superType=[fmlType::EnumerationType|ESUfid]
@@ -11545,19 +14131,19 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
 		
-		//literal+=EnumerationLiteral
+		//literal+= EnumerationLiteral
 		public Assignment getLiteralAssignment_4() { return cLiteralAssignment_4; }
 		
 		//EnumerationLiteral
 		public RuleCall getLiteralEnumerationLiteralParserRuleCall_4_0() { return cLiteralEnumerationLiteralParserRuleCall_4_0; }
 		
-		//(',' literal+=EnumerationLiteral)*
+		//( ',' literal+= EnumerationLiteral )*
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//','
 		public Keyword getCommaKeyword_5_0() { return cCommaKeyword_5_0; }
 		
-		//literal+=EnumerationLiteral
+		//literal+= EnumerationLiteral
 		public Assignment getLiteralAssignment_5_1() { return cLiteralAssignment_5_1; }
 		
 		//EnumerationLiteral
@@ -11595,24 +14181,30 @@
 		private final RuleCall cLiteralEnumerationLiteralParserRuleCall_9_1_0 = (RuleCall)cLiteralAssignment_9_1.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
 		
-		//EnumerationTypeDefinition fmlType::EnumerationType:
-		//	{fmlType::EnumerationType} visibility=VisibilityKind? typedef?='type'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
-		//	'{'
-		//	literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)*
-		//	'}';
+		//EnumerationTypeDefinition returns fmlType::EnumerationType
+		//    : {fmlType::EnumerationType}
+		//        ( visibility=VisibilityKind )? typedef?='type'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        'enum'  ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+		//        '{'
+		//            literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::EnumerationType} visibility=VisibilityKind? typedef?='type' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? 'enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')? '{'
-		//literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)* '}'
+		//{fmlType::EnumerationType}
+		//       ( visibility=VisibilityKind )? typedef?='type'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       'enum'  ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+		//       '{'
+		//           literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::EnumerationType}
 		public Action getEnumerationTypeAction_0() { return cEnumerationTypeAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -11630,7 +14222,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -11639,13 +14231,13 @@
 		//'enum'
 		public Keyword getEnumKeyword_5() { return cEnumKeyword_5; }
 		
-		//('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
+		//( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_6_0() { return cLessThanSignKeyword_6_0; }
 		
-		//'super:'?
+		//( 'super:' )?
 		public Keyword getSuperKeyword_6_1() { return cSuperKeyword_6_1; }
 		
 		//superType=[fmlType::EnumerationType|ESUfid]
@@ -11663,19 +14255,19 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
 		
-		//literal+=EnumerationLiteral
+		//literal+= EnumerationLiteral
 		public Assignment getLiteralAssignment_8() { return cLiteralAssignment_8; }
 		
 		//EnumerationLiteral
 		public RuleCall getLiteralEnumerationLiteralParserRuleCall_8_0() { return cLiteralEnumerationLiteralParserRuleCall_8_0; }
 		
-		//(',' literal+=EnumerationLiteral)*
+		//( ',' literal+= EnumerationLiteral )*
 		public Group getGroup_9() { return cGroup_9; }
 		
 		//','
 		public Keyword getCommaKeyword_9_0() { return cCommaKeyword_9_0; }
 		
-		//literal+=EnumerationLiteral
+		//literal+= EnumerationLiteral
 		public Assignment getLiteralAssignment_9_1() { return cLiteralAssignment_9_1; }
 		
 		//EnumerationLiteral
@@ -11710,17 +14302,24 @@
 		private final RuleCall cLiteralEnumerationLiteralParserRuleCall_7_1_0 = (RuleCall)cLiteralAssignment_7_1.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		
-		//EnumerationTypeDefinitionImpl fmlType::EnumerationType:
-		//	{fmlType::EnumerationType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	typedef?='enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
-		//	'{'
-		//	literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)*
-		//	'}';
+		//EnumerationTypeDefinitionImpl returns fmlType::EnumerationType
+		//    : {fmlType::EnumerationType}
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        typedef?='enum'
+		//        ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+		//        '{'
+		//            literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::EnumerationType} name=ESIdentifier unrestrictedName=UnrestrictedName? typedef?='enum' ('<' 'super:'?
-		//superType=[fmlType::EnumerationType|ESUfid] '>')? '{' literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)*
-		//'}'
+		//{fmlType::EnumerationType}
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       typedef?='enum'
+		//       ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+		//       '{'
+		//           literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::EnumerationType}
@@ -11732,7 +14331,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_1_0() { return cNameESIdentifierParserRuleCall_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
@@ -11744,13 +14343,13 @@
 		//'enum'
 		public Keyword getTypedefEnumKeyword_3_0() { return cTypedefEnumKeyword_3_0; }
 		
-		//('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
+		//( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
 		public Group getGroup_4() { return cGroup_4; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_4_0() { return cLessThanSignKeyword_4_0; }
 		
-		//'super:'?
+		//( 'super:' )?
 		public Keyword getSuperKeyword_4_1() { return cSuperKeyword_4_1; }
 		
 		//superType=[fmlType::EnumerationType|ESUfid]
@@ -11768,19 +14367,19 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
 		
-		//literal+=EnumerationLiteral
+		//literal+= EnumerationLiteral
 		public Assignment getLiteralAssignment_6() { return cLiteralAssignment_6; }
 		
 		//EnumerationLiteral
 		public RuleCall getLiteralEnumerationLiteralParserRuleCall_6_0() { return cLiteralEnumerationLiteralParserRuleCall_6_0; }
 		
-		//(',' literal+=EnumerationLiteral)*
+		//( ',' literal+= EnumerationLiteral )*
 		public Group getGroup_7() { return cGroup_7; }
 		
 		//','
 		public Keyword getCommaKeyword_7_0() { return cCommaKeyword_7_0; }
 		
-		//literal+=EnumerationLiteral
+		//literal+= EnumerationLiteral
 		public Assignment getLiteralAssignment_7_1() { return cLiteralAssignment_7_1; }
 		
 		//EnumerationLiteral
@@ -11801,11 +14400,14 @@
 		private final Assignment cValueAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
 		private final RuleCall cValueLiteralTerminalExpressionParserRuleCall_2_1_0 = (RuleCall)cValueAssignment_2_1.eContents().get(0);
 		
-		//EnumerationLiteral fmlType::EnumerationLiteral:
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' value=LiteralTerminalExpression)?;
+		//EnumerationLiteral returns fmlType::EnumerationLiteral
+		//    : name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( '=' value=LiteralTerminalExpression )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' value=LiteralTerminalExpression)?
+		//name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( '=' value=LiteralTerminalExpression )?
 		public Group getGroup() { return cGroup; }
 		
 		//name=ESIdentifier
@@ -11814,13 +14416,13 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_0_0() { return cNameESIdentifierParserRuleCall_0_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_1() { return cUnrestrictedNameAssignment_1; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_1_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_1_0; }
 		
-		//('=' value=LiteralTerminalExpression)?
+		//( '=' value=LiteralTerminalExpression )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'='
@@ -11843,16 +14445,22 @@
 		private final RuleCall cPropertyVariableParserRuleCall_4_0 = (RuleCall)cPropertyAssignment_4.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
-		//StructureType fmlType::StructureType:
-		//	{fmlType::StructureType}
-		//	'struct'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//StructureType returns fmlType::StructureType
+		//    : {fmlType::StructureType}
+		//        'struct'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::StructureType} 'struct' '{' '@property:'? property+=Variable+ '}'
+		//{fmlType::StructureType}
+		//       'struct'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::StructureType}
@@ -11864,10 +14472,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_3() { return cPropertyKeyword_3; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_4() { return cPropertyAssignment_4; }
 		
 		//Variable
@@ -11895,24 +14503,32 @@
 		private final RuleCall cPropertyVariableParserRuleCall_8_0 = (RuleCall)cPropertyAssignment_8.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
 		
-		//StructureTypeDefinition fmlType::StructureType:
-		//	{fmlType::StructureType} visibility=VisibilityKind? typedef?='type'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'struct'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//StructureTypeDefinition returns fmlType::StructureType
+		//    : {fmlType::StructureType}
+		//        ( visibility=VisibilityKind )? typedef?='type'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        'struct'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::StructureType} visibility=VisibilityKind? typedef?='type' name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//'struct' '{' '@property:'? property+=Variable+ '}'
+		//{fmlType::StructureType}
+		//       ( visibility=VisibilityKind )? typedef?='type'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       'struct'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::StructureType}
 		public Action getStructureTypeAction_0() { return cStructureTypeAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -11930,7 +14546,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -11942,10 +14558,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_7() { return cPropertyKeyword_7; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_8() { return cPropertyAssignment_8; }
 		
 		//Variable
@@ -11970,17 +14586,24 @@
 		private final RuleCall cPropertyVariableParserRuleCall_6_0 = (RuleCall)cPropertyAssignment_6.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
-		//StructureTypeDefinitionImpl fmlType::StructureType:
-		//	{fmlType::StructureType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	typedef?='struct'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//StructureTypeDefinitionImpl returns fmlType::StructureType
+		//    : {fmlType::StructureType}
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        typedef?='struct'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::StructureType} name=ESIdentifier unrestrictedName=UnrestrictedName? typedef?='struct' '{' '@property:'?
-		//property+=Variable+ '}'
+		//{fmlType::StructureType}
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       typedef?='struct'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::StructureType}
@@ -11992,7 +14615,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_1_0() { return cNameESIdentifierParserRuleCall_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
@@ -12007,10 +14630,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_5() { return cPropertyKeyword_5; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_6() { return cPropertyAssignment_6; }
 		
 		//Variable
@@ -12030,16 +14653,22 @@
 		private final RuleCall cPropertyVariableParserRuleCall_4_0 = (RuleCall)cPropertyAssignment_4.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
-		//UnionType fmlType::UnionType:
-		//	{fmlType::UnionType}
-		//	'union'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//UnionType returns fmlType::UnionType
+		//    : {fmlType::UnionType}
+		//        'union'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::UnionType} 'union' '{' '@property:'? property+=Variable+ '}'
+		//{fmlType::UnionType}
+		//       'union'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::UnionType}
@@ -12051,10 +14680,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_3() { return cPropertyKeyword_3; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_4() { return cPropertyAssignment_4; }
 		
 		//Variable
@@ -12082,24 +14711,32 @@
 		private final RuleCall cPropertyVariableParserRuleCall_8_0 = (RuleCall)cPropertyAssignment_8.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
 		
-		//UnionTypeDefinition fmlType::UnionType:
-		//	{fmlType::UnionType} visibility=VisibilityKind? typedef?='type'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'union'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//UnionTypeDefinition returns fmlType::UnionType
+		//    : {fmlType::UnionType}
+		//        ( visibility=VisibilityKind )? typedef?='type'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        'union'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::UnionType} visibility=VisibilityKind? typedef?='type' name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//'union' '{' '@property:'? property+=Variable+ '}'
+		//{fmlType::UnionType}
+		//       ( visibility=VisibilityKind )? typedef?='type'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       'union'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::UnionType}
 		public Action getUnionTypeAction_0() { return cUnionTypeAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -12117,7 +14754,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -12129,10 +14766,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_7() { return cPropertyKeyword_7; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_8() { return cPropertyAssignment_8; }
 		
 		//Variable
@@ -12157,17 +14794,24 @@
 		private final RuleCall cPropertyVariableParserRuleCall_6_0 = (RuleCall)cPropertyAssignment_6.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
-		//UnionTypeDefinitionImpl fmlType::UnionType:
-		//	{fmlType::UnionType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	typedef?='union'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//UnionTypeDefinitionImpl returns fmlType::UnionType
+		//    : {fmlType::UnionType}
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        typedef?='union'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::UnionType} name=ESIdentifier unrestrictedName=UnrestrictedName? typedef?='union' '{' '@property:'?
-		//property+=Variable+ '}'
+		//{fmlType::UnionType}
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       typedef?='union'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::UnionType}
@@ -12179,7 +14823,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_1_0() { return cNameESIdentifierParserRuleCall_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
@@ -12194,10 +14838,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_5() { return cPropertyKeyword_5; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_6() { return cPropertyAssignment_6; }
 		
 		//Variable
@@ -12217,16 +14861,22 @@
 		private final RuleCall cPropertyVariableParserRuleCall_4_0 = (RuleCall)cPropertyAssignment_4.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
-		//ChoiceType fmlType::ChoiceType:
-		//	{fmlType::ChoiceType}
-		//	'choice'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//ChoiceType returns fmlType::ChoiceType
+		//    : {fmlType::ChoiceType}
+		//        'choice'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::ChoiceType} 'choice' '{' '@property:'? property+=Variable+ '}'
+		//{fmlType::ChoiceType}
+		//       'choice'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::ChoiceType}
@@ -12238,10 +14888,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_3() { return cPropertyKeyword_3; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_4() { return cPropertyAssignment_4; }
 		
 		//Variable
@@ -12269,24 +14919,32 @@
 		private final RuleCall cPropertyVariableParserRuleCall_8_0 = (RuleCall)cPropertyAssignment_8.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
 		
-		//ChoiceTypeDefinition fmlType::ChoiceType:
-		//	{fmlType::ChoiceType} visibility=VisibilityKind? typedef?='type'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'choice'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//ChoiceTypeDefinition returns fmlType::ChoiceType
+		//    : {fmlType::ChoiceType}
+		//        ( visibility=VisibilityKind )? typedef?='type'
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        'choice'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::ChoiceType} visibility=VisibilityKind? typedef?='type' name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//'choice' '{' '@property:'? property+=Variable+ '}'
+		//{fmlType::ChoiceType}
+		//       ( visibility=VisibilityKind )? typedef?='type'
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       'choice'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::ChoiceType}
 		public Action getChoiceTypeAction_0() { return cChoiceTypeAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -12304,7 +14962,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -12316,10 +14974,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_7() { return cPropertyKeyword_7; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_8() { return cPropertyAssignment_8; }
 		
 		//Variable
@@ -12344,17 +15002,24 @@
 		private final RuleCall cPropertyVariableParserRuleCall_6_0 = (RuleCall)cPropertyAssignment_6.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
-		//ChoiceTypeDefinitionImpl fmlType::ChoiceType:
-		//	{fmlType::ChoiceType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	typedef?='choice'
-		//	'{'
-		//	'@property:'?
-		//	property+=Variable+
-		//	'}';
+		//ChoiceTypeDefinitionImpl returns fmlType::ChoiceType
+		//    : {fmlType::ChoiceType}
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        typedef?='choice'
+		//        '{'
+		//            ( '@property:' )?
+		//            ( property+=Variable )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::ChoiceType} name=ESIdentifier unrestrictedName=UnrestrictedName? typedef?='choice' '{' '@property:'?
-		//property+=Variable+ '}'
+		//{fmlType::ChoiceType}
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       typedef?='choice'
+		//       '{'
+		//           ( '@property:' )?
+		//           ( property+=Variable )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::ChoiceType}
@@ -12366,7 +15031,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_1_0() { return cNameESIdentifierParserRuleCall_1_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_2() { return cUnrestrictedNameAssignment_2; }
 		
 		//UnrestrictedName
@@ -12381,10 +15046,10 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
 		
-		//'@property:'?
+		//( '@property:' )?
 		public Keyword getPropertyKeyword_5() { return cPropertyKeyword_5; }
 		
-		//property+=Variable+
+		//( property+=Variable )+
 		public Assignment getPropertyAssignment_6() { return cPropertyAssignment_6; }
 		
 		//Variable
@@ -12411,88 +15076,102 @@
 		
 		///*
 		//enum TypeSpecifyerKind returns TypeSpecifyerKind
-		//	: ALIAS = 'ALIAS'
-		//	| BOOLEAN = 'BOOLEAN'
-		//	| CHAR = 'CHAR'
-		//	| INT = 'INT'
-		//	| RATIONAL = 'RATIONAL'
-		//	| URATIONAL = 'URATIONAL'
-		//	| FLOAT = 'FLOAT'
-		//	| UFLOAT = 'UFLOAT'
-		//	| DOUBLE = 'DOUBLE'
-		//	| UDOUBLE = 'UDOUBLE'
-		//	| REAL = 'REAL'
-		//	| UREAL = 'UREAL'
-		//	| CTIME = 'CTIME'
-		//	| DTIME = 'DTIME'
-		//	| STRING = 'STRING'
-		//	| IDENTIFIER = 'IDENTIFIER'
-		//	| UFI = 'UFI'
-		//	| ARRAY = 'ARRAY'
-		//	| VECTOR = 'VECTOR'
-		//	| LIST = 'LIST'
-		//	| FIFO = 'FIFO'
-		//	| LIFO = 'LIFO'
-		//	| MULTISET = 'MULTISET'
-		//	| SET = 'SET'
-		//	| INTERVAL = 'INTERVAL'
-		//	| ENUM = 'ENUM'
-		//	| STRUCTURE = 'STRUCTURE'
-		//	| BUFFER = 'BUFFER'
-		//	| MESSAGE = 'MESSAGE'
-		//	| PORT = 'PORT'
-		//	| CONNECTION = 'CONNECTION'
-		//	| OPERATOR = 'OPERATOR'
-		//	| MACHINE = 'MACHINE'
-		//	| LAMBDA = 'LAMBDA'
-		//	| UNIVERSAL = 'UNIVERSAL'
-		//	;
-		//*/ ////////////////////////////////////////////////////////////////////////////////
+		//    : ALIAS = 'ALIAS'
+		//    | BOOLEAN = 'BOOLEAN'
+		//    | CHAR = 'CHAR'
+		//    | INT = 'INT'
+		//    | RATIONAL = 'RATIONAL'
+		//    | URATIONAL = 'URATIONAL'
+		//    | FLOAT = 'FLOAT'
+		//    | UFLOAT = 'UFLOAT'
+		//    | DOUBLE = 'DOUBLE'
+		//    | UDOUBLE = 'UDOUBLE'
+		//    | REAL = 'REAL'
+		//    | UREAL = 'UREAL'
+		//    | CTIME = 'CTIME'
+		//    | DTIME = 'DTIME'
+		//    | STRING = 'STRING'
+		//    | IDENTIFIER = 'IDENTIFIER'
+		//    | UFI = 'UFI'
+		//    | ARRAY = 'ARRAY'
+		//    | VECTOR = 'VECTOR'
+		//    | LIST = 'LIST'
+		//    | FIFO = 'FIFO'
+		//    | LIFO = 'LIFO'
+		//    | MULTISET = 'MULTISET'
+		//    | SET = 'SET'
+		//    | INTERVAL = 'INTERVAL'
+		//    | ENUM = 'ENUM'
+		//    | STRUCTURE = 'STRUCTURE'
+		//    | BUFFER = 'BUFFER'
+		//    | MESSAGE = 'MESSAGE'
+		//    | PORT = 'PORT'
+		//    | CONNECTION = 'CONNECTION'
+		//    | OPERATOR = 'OPERATOR'
+		//    | MACHINE = 'MACHINE'
+		//    | LAMBDA = 'LAMBDA'
+		//    | UNIVERSAL = 'UNIVERSAL'
+		//    ;
+		//*/
+		//////////////////////////////////////////////////////////////////////////////////
 		//// Modifier Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Modifier fmlInfra::Modifier:
-		//	{fmlInfra::Modifier} (static?='static'?
-		//	& final?='final'?
-		//	& volatile?='volatile'?
-		//	& transient?='transient'?
-		//	& optional?='optional'?);
+		//Modifier returns fmlInfra::Modifier
+		//    : {fmlInfra::Modifier}
+		//        ( ( static?='static' )?
+		//        & ( final ?='final'  )?
+		//        & ( volatile ?='volatile'  )?
+		//        & ( transient?='transient' )?
+		//        & ( optional?='optional' )?
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Modifier} (static?='static'? & final?='final'? & volatile?='volatile'? & transient?='transient'? &
-		//optional?='optional'?)
+		//{fmlInfra::Modifier}
+		//       ( ( static?='static' )?
+		//       & ( final ?='final'  )?
+		//       & ( volatile ?='volatile'  )?
+		//       & ( transient?='transient' )?
+		//       & ( optional?='optional' )?
+		//       )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Modifier}
 		public Action getModifierAction_0() { return cModifierAction_0; }
 		
-		//(static?='static'? & final?='final'? & volatile?='volatile'? & transient?='transient'? & optional?='optional'?)
+		//( ( static?='static' )?
+		//& ( final ?='final'  )?
+		//& ( volatile ?='volatile'  )?
+		//& ( transient?='transient' )?
+		//& ( optional?='optional' )?
+		//)
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//static?='static'?
+		//( static?='static' )?
 		public Assignment getStaticAssignment_1_0() { return cStaticAssignment_1_0; }
 		
 		//'static'
 		public Keyword getStaticStaticKeyword_1_0_0() { return cStaticStaticKeyword_1_0_0; }
 		
-		//final?='final'?
+		//( final ?='final'  )?
 		public Assignment getFinalAssignment_1_1() { return cFinalAssignment_1_1; }
 		
 		//'final'
 		public Keyword getFinalFinalKeyword_1_1_0() { return cFinalFinalKeyword_1_1_0; }
 		
-		//volatile?='volatile'?
+		//( volatile ?='volatile'  )?
 		public Assignment getVolatileAssignment_1_2() { return cVolatileAssignment_1_2; }
 		
 		//'volatile'
 		public Keyword getVolatileVolatileKeyword_1_2_0() { return cVolatileVolatileKeyword_1_2_0; }
 		
-		//transient?='transient'?
+		//( transient?='transient' )?
 		public Assignment getTransientAssignment_1_3() { return cTransientAssignment_1_3; }
 		
 		//'transient'
 		public Keyword getTransientTransientKeyword_1_3_0() { return cTransientTransientKeyword_1_3_0; }
 		
-		//optional?='optional'?
+		//( optional?='optional' )?
 		public Assignment getOptionalAssignment_1_4() { return cOptionalAssignment_1_4; }
 		
 		//'optional'
@@ -12531,25 +15210,42 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Function Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Function fmlInfra::Function:
-		//	{fmlInfra::Function} (visibility=VisibilityKind
-		//	& modifier=Modifier)?
-		//	'fun'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')?
-		//	'->' (resultSet=FormalParameterSet
-		//	| '(' resultSet=FormalParameterSet ')')
-		//	';';
+		//Function returns fmlInfra::Function
+		//    : {fmlInfra::Function}
+		//        ( visibility=VisibilityKind
+		//          & modifier=Modifier
+		//        )?
+		//        'fun'
+		//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        '->'
+		//        (     resultSet=FormalParameterSet
+		//        | '(' resultSet=FormalParameterSet ')'
+		//        )
+		//        ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Function} (visibility=VisibilityKind & modifier=Modifier)? 'fun' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')? '->' (resultSet=FormalParameterSet | '('
-		//resultSet=FormalParameterSet ')') ';'
+		//{fmlInfra::Function}
+		//       ( visibility=VisibilityKind
+		//         & modifier=Modifier
+		//       )?
+		//       'fun'
+		//       name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       '->'
+		//       (     resultSet=FormalParameterSet
+		//       | '(' resultSet=FormalParameterSet ')'
+		//       )
+		//       ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Function}
 		public Action getFunctionAction_0() { return cFunctionAction_0; }
 		
-		//(visibility=VisibilityKind & modifier=Modifier)?
+		//( visibility=VisibilityKind
+		//  & modifier=Modifier
+		//)?
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
 		//visibility=VisibilityKind
@@ -12573,19 +15269,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_5_1() { return cParameterSetAssignment_5_1; }
 		
 		//FormalParameterSet
@@ -12597,7 +15293,9 @@
 		//'->'
 		public Keyword getHyphenMinusGreaterThanSignKeyword_6() { return cHyphenMinusGreaterThanSignKeyword_6; }
 		
-		//(resultSet=FormalParameterSet | '(' resultSet=FormalParameterSet ')')
+		//(     resultSet=FormalParameterSet
+		//| '(' resultSet=FormalParameterSet ')'
+		//)
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
 		//resultSet=FormalParameterSet
@@ -12651,23 +15349,36 @@
 		private final Keyword cRightParenthesisKeyword_7_1_2 = (Keyword)cGroup_7_1.eContents().get(2);
 		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		
-		//FunctionImpl fmlInfra::Function:
-		//	{fmlInfra::Function} modifier=Modifier?
-		//	'fun'
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')?
-		//	'->' (resultSet=FormalParameterSet
-		//	| '(' resultSet=FormalParameterSet ')')
-		//	';';
+		//FunctionImpl returns fmlInfra::Function
+		//    : {fmlInfra::Function}
+		//        ( modifier=Modifier )?
+		//        'fun'
+		//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        '->'
+		//        (     resultSet=FormalParameterSet
+		//        | '(' resultSet=FormalParameterSet ')'
+		//        )
+		//        ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Function} modifier=Modifier? 'fun' name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-		//parameterSet=FormalParameterSet? ')')? '->' (resultSet=FormalParameterSet | '(' resultSet=FormalParameterSet ')') ';'
+		//{fmlInfra::Function}
+		//       ( modifier=Modifier )?
+		//       'fun'
+		//       name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       '->'
+		//       (     resultSet=FormalParameterSet
+		//       | '(' resultSet=FormalParameterSet ')'
+		//       )
+		//       ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Function}
 		public Action getFunctionAction_0() { return cFunctionAction_0; }
 		
-		//modifier=Modifier?
+		//( modifier=Modifier )?
 		public Assignment getModifierAssignment_1() { return cModifierAssignment_1; }
 		
 		//Modifier
@@ -12682,19 +15393,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_5_1() { return cParameterSetAssignment_5_1; }
 		
 		//FormalParameterSet
@@ -12706,7 +15417,9 @@
 		//'->'
 		public Keyword getHyphenMinusGreaterThanSignKeyword_6() { return cHyphenMinusGreaterThanSignKeyword_6; }
 		
-		//(resultSet=FormalParameterSet | '(' resultSet=FormalParameterSet ')')
+		//(     resultSet=FormalParameterSet
+		//| '(' resultSet=FormalParameterSet ')'
+		//)
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
 		//resultSet=FormalParameterSet
@@ -12737,8 +15450,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.FunctionPublic");
 		private final RuleCall cFunctionImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//FunctionPublic fmlInfra::Function:
-		//	FunctionImpl;
+		//FunctionPublic returns fmlInfra::Function
+		//    : FunctionImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//FunctionImpl
@@ -12748,8 +15462,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.FunctionProtected");
 		private final RuleCall cFunctionImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//FunctionProtected fmlInfra::Function:
-		//	FunctionImpl;
+		//FunctionProtected returns fmlInfra::Function
+		//    : FunctionImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//FunctionImpl
@@ -12759,8 +15474,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.FunctionPrivate");
 		private final RuleCall cFunctionImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//FunctionPrivate fmlInfra::Function:
-		//	FunctionImpl;
+		//FunctionPrivate returns fmlInfra::Function
+		//    : FunctionImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//FunctionImpl
@@ -12785,29 +15501,41 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Variable Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//ModifierVar fmlInfra::Modifier:
-		//	{fmlInfra::Modifier} (static?='static'?
-		//	& final?=('final' | 'const')?
-		//	& volatile?='volatile'?
-		//	& transient?='transient'?);
+		//ModifierVar returns fmlInfra::Modifier
+		//    : {fmlInfra::Modifier}
+		//        ( ( static?='static' )?
+		//        & ( final ?=('final' | 'const') )?
+		//        & ( volatile ?='volatile'  )?
+		//        & ( transient?='transient' )?
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Modifier} (static?='static'? & final?=('final' | 'const')? & volatile?='volatile'? & transient?='transient'?)
+		//{fmlInfra::Modifier}
+		//       ( ( static?='static' )?
+		//       & ( final ?=('final' | 'const') )?
+		//       & ( volatile ?='volatile'  )?
+		//       & ( transient?='transient' )?
+		//       )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Modifier}
 		public Action getModifierAction_0() { return cModifierAction_0; }
 		
-		//(static?='static'? & final?=('final' | 'const')? & volatile?='volatile'? & transient?='transient'?)
+		//( ( static?='static' )?
+		//& ( final ?=('final' | 'const') )?
+		//& ( volatile ?='volatile'  )?
+		//& ( transient?='transient' )?
+		//)
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
-		//static?='static'?
+		//( static?='static' )?
 		public Assignment getStaticAssignment_1_0() { return cStaticAssignment_1_0; }
 		
 		//'static'
 		public Keyword getStaticStaticKeyword_1_0_0() { return cStaticStaticKeyword_1_0_0; }
 		
-		//final?=('final' | 'const')?
+		//( final ?=('final' | 'const') )?
 		public Assignment getFinalAssignment_1_1() { return cFinalAssignment_1_1; }
 		
 		//('final' | 'const')
@@ -12819,13 +15547,13 @@
 		//'const'
 		public Keyword getFinalConstKeyword_1_1_0_1() { return cFinalConstKeyword_1_1_0_1; }
 		
-		//volatile?='volatile'?
+		//( volatile ?='volatile'  )?
 		public Assignment getVolatileAssignment_1_2() { return cVolatileAssignment_1_2; }
 		
 		//'volatile'
 		public Keyword getVolatileVolatileKeyword_1_2_0() { return cVolatileVolatileKeyword_1_2_0; }
 		
-		//transient?='transient'?
+		//( transient?='transient' )?
 		public Assignment getTransientAssignment_1_3() { return cTransientAssignment_1_3; }
 		
 		//'transient'
@@ -12879,37 +15607,59 @@
 		private final Keyword cRightCurlyBracketKeyword_7_0_2 = (Keyword)cGroup_7_0.eContents().get(2);
 		private final Keyword cSemicolonKeyword_7_1 = (Keyword)cAlternatives_7.eContents().get(1);
 		
-		//Variable fmlInfra::Variable:
-		//	(visibility=VisibilityKind?
-		//	& modifier=Modifier?) ('var' | const?='val'
-		//	| (const?='const' | const?='final') macro?='macro'? 'var'?
-		//	| macro?='macro' ('var' | const?='val')?) type=DataType reference?='&'?
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ('{' onWriteAction=OnWriteRoutine
-		//	'}' | ';');
+		//Variable returns fmlInfra::Variable
+		//    : ( ( visibility=VisibilityKind )?
+		//        & ( modifier=Modifier )?
+		//        )
+		//        ( 'var' | const?='val'
+		//        | ( const?='const' | const?='final' ) ( macro?='macro' )? ( 'var' )?
+		//        | macro?='macro' ( 'var' | const?='val' )?
+		//        )
+		//         type=DataType  ( reference?='&' )?
+		//         name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//        ( '=' defaultValue=Expression )?
+		//        ( ( '{' onWriteAction=OnWriteRoutine  '}' )
+		//        | ';'
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//(visibility=VisibilityKind? & modifier=Modifier?) ('var' | const?='val' | (const?='const' | const?='final')
-		//macro?='macro'? 'var'? | macro?='macro' ('var' | const?='val')?) type=DataType reference?='&'? name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ('{' onWriteAction=OnWriteRoutine '}' | ';')
+		//( ( visibility=VisibilityKind )?
+		//       & ( modifier=Modifier )?
+		//       )
+		//       ( 'var' | const?='val'
+		//       | ( const?='const' | const?='final' ) ( macro?='macro' )? ( 'var' )?
+		//       | macro?='macro' ( 'var' | const?='val' )?
+		//       )
+		//        type=DataType  ( reference?='&' )?
+		//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//       ( '=' defaultValue=Expression )?
+		//       ( ( '{' onWriteAction=OnWriteRoutine  '}' )
+		//       | ';'
+		//       )
 		public Group getGroup() { return cGroup; }
 		
-		//(visibility=VisibilityKind? & modifier=Modifier?)
+		//( ( visibility=VisibilityKind )?
+		//       & ( modifier=Modifier )?
+		//       )
 		public UnorderedGroup getUnorderedGroup_0() { return cUnorderedGroup_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_0_0() { return cVisibilityAssignment_0_0; }
 		
 		//VisibilityKind
 		public RuleCall getVisibilityVisibilityKindEnumRuleCall_0_0_0() { return cVisibilityVisibilityKindEnumRuleCall_0_0_0; }
 		
-		//modifier=Modifier?
+		//( modifier=Modifier )?
 		public Assignment getModifierAssignment_0_1() { return cModifierAssignment_0_1; }
 		
 		//Modifier
 		public RuleCall getModifierModifierParserRuleCall_0_1_0() { return cModifierModifierParserRuleCall_0_1_0; }
 		
-		//('var' | const?='val' | (const?='const' | const?='final') macro?='macro'? 'var'? | macro?='macro' ('var' |
-		//const?='val')?)
+		//( 'var' | const?='val'
+		//| ( const?='const' | const?='final' ) ( macro?='macro' )? ( 'var' )?
+		//| macro?='macro' ( 'var' | const?='val' )?
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'var'
@@ -12921,10 +15671,10 @@
 		//'val'
 		public Keyword getConstValKeyword_1_1_0() { return cConstValKeyword_1_1_0; }
 		
-		//(const?='const' | const?='final') macro?='macro'? 'var'?
+		//( const?='const' | const?='final' ) ( macro?='macro' )? ( 'var' )?
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
-		//(const?='const' | const?='final')
+		//( const?='const' | const?='final' )
 		public Alternatives getAlternatives_1_2_0() { return cAlternatives_1_2_0; }
 		
 		//const?='const'
@@ -12939,16 +15689,16 @@
 		//'final'
 		public Keyword getConstFinalKeyword_1_2_0_1_0() { return cConstFinalKeyword_1_2_0_1_0; }
 		
-		//macro?='macro'?
+		//( macro?='macro' )?
 		public Assignment getMacroAssignment_1_2_1() { return cMacroAssignment_1_2_1; }
 		
 		//'macro'
 		public Keyword getMacroMacroKeyword_1_2_1_0() { return cMacroMacroKeyword_1_2_1_0; }
 		
-		//'var'?
+		//( 'var' )?
 		public Keyword getVarKeyword_1_2_2() { return cVarKeyword_1_2_2; }
 		
-		//macro?='macro' ('var' | const?='val')?
+		//macro?='macro' ( 'var' | const?='val' )?
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//macro?='macro'
@@ -12957,7 +15707,7 @@
 		//'macro'
 		public Keyword getMacroMacroKeyword_1_3_0_0() { return cMacroMacroKeyword_1_3_0_0; }
 		
-		//('var' | const?='val')?
+		//( 'var' | const?='val' )?
 		public Alternatives getAlternatives_1_3_1() { return cAlternatives_1_3_1; }
 		
 		//'var'
@@ -12975,7 +15725,7 @@
 		//DataType
 		public RuleCall getTypeDataTypeParserRuleCall_2_0() { return cTypeDataTypeParserRuleCall_2_0; }
 		
-		//reference?='&'?
+		//( reference?='&' )?
 		public Assignment getReferenceAssignment_3() { return cReferenceAssignment_3; }
 		
 		//'&'
@@ -12987,13 +15737,13 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_5_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_5_0; }
 		
-		//('=' defaultValue=Expression)?
+		//( '=' defaultValue=Expression )?
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//'='
@@ -13005,10 +15755,12 @@
 		//Expression
 		public RuleCall getDefaultValueExpressionParserRuleCall_6_1_0() { return cDefaultValueExpressionParserRuleCall_6_1_0; }
 		
-		//('{' onWriteAction=OnWriteRoutine '}' | ';')
+		//( ( '{' onWriteAction=OnWriteRoutine  '}' )
+		//| ';'
+		//)
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
-		//'{' onWriteAction=OnWriteRoutine '}'
+		//( '{' onWriteAction=OnWriteRoutine  '}' )
 		public Group getGroup_7_0() { return cGroup_7_0; }
 		
 		//'{'
@@ -13068,26 +15820,44 @@
 		private final Keyword cRightCurlyBracketKeyword_7_0_2 = (Keyword)cGroup_7_0.eContents().get(2);
 		private final Keyword cSemicolonKeyword_7_1 = (Keyword)cAlternatives_7.eContents().get(1);
 		
-		//VariableImpl fmlInfra::Variable:
-		//	modifier=Modifier? ('var' | const?='val'
-		//	| const?='const' macro?='macro'? 'var'?
-		//	| macro?='macro' ('var' | const?='val')?) type=DataType reference?='&'?
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ('{' onWriteAction=OnWriteRoutine
-		//	'}' | ';');
+		//VariableImpl returns fmlInfra::Variable
+		//    : ( modifier=Modifier )?
+		//        ( 'var' | const?='val'
+		//        | const?='const' ( macro?='macro' )? ( 'var' )?
+		//        | macro?='macro' ( 'var' | const?='val' )?
+		//        )
+		//         type=DataType  ( reference?='&' )?
+		//         name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//        ( '=' defaultValue=Expression )?
+		//        ( ( '{' onWriteAction=OnWriteRoutine  '}' )
+		//        | ';'
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//modifier=Modifier? ('var' | const?='val' | const?='const' macro?='macro'? 'var'? | macro?='macro' ('var' |
-		//const?='val')?) type=DataType reference?='&'? name=ESIdentifier unrestrictedName=UnrestrictedName? ('='
-		//defaultValue=Expression)? ('{' onWriteAction=OnWriteRoutine '}' | ';')
+		//( modifier=Modifier )?
+		//       ( 'var' | const?='val'
+		//       | const?='const' ( macro?='macro' )? ( 'var' )?
+		//       | macro?='macro' ( 'var' | const?='val' )?
+		//       )
+		//        type=DataType  ( reference?='&' )?
+		//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//       ( '=' defaultValue=Expression )?
+		//       ( ( '{' onWriteAction=OnWriteRoutine  '}' )
+		//       | ';'
+		//       )
 		public Group getGroup() { return cGroup; }
 		
-		//modifier=Modifier?
+		//( modifier=Modifier )?
 		public Assignment getModifierAssignment_0() { return cModifierAssignment_0; }
 		
 		//Modifier
 		public RuleCall getModifierModifierParserRuleCall_0_0() { return cModifierModifierParserRuleCall_0_0; }
 		
-		//('var' | const?='val' | const?='const' macro?='macro'? 'var'? | macro?='macro' ('var' | const?='val')?)
+		//( 'var' | const?='val'
+		//| const?='const' ( macro?='macro' )? ( 'var' )?
+		//| macro?='macro' ( 'var' | const?='val' )?
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'var'
@@ -13099,7 +15869,7 @@
 		//'val'
 		public Keyword getConstValKeyword_1_1_0() { return cConstValKeyword_1_1_0; }
 		
-		//const?='const' macro?='macro'? 'var'?
+		//const?='const' ( macro?='macro' )? ( 'var' )?
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//const?='const'
@@ -13108,16 +15878,16 @@
 		//'const'
 		public Keyword getConstConstKeyword_1_2_0_0() { return cConstConstKeyword_1_2_0_0; }
 		
-		//macro?='macro'?
+		//( macro?='macro' )?
 		public Assignment getMacroAssignment_1_2_1() { return cMacroAssignment_1_2_1; }
 		
 		//'macro'
 		public Keyword getMacroMacroKeyword_1_2_1_0() { return cMacroMacroKeyword_1_2_1_0; }
 		
-		//'var'?
+		//( 'var' )?
 		public Keyword getVarKeyword_1_2_2() { return cVarKeyword_1_2_2; }
 		
-		//macro?='macro' ('var' | const?='val')?
+		//macro?='macro' ( 'var' | const?='val' )?
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//macro?='macro'
@@ -13126,7 +15896,7 @@
 		//'macro'
 		public Keyword getMacroMacroKeyword_1_3_0_0() { return cMacroMacroKeyword_1_3_0_0; }
 		
-		//('var' | const?='val')?
+		//( 'var' | const?='val' )?
 		public Alternatives getAlternatives_1_3_1() { return cAlternatives_1_3_1; }
 		
 		//'var'
@@ -13144,7 +15914,7 @@
 		//DataType
 		public RuleCall getTypeDataTypeParserRuleCall_2_0() { return cTypeDataTypeParserRuleCall_2_0; }
 		
-		//reference?='&'?
+		//( reference?='&' )?
 		public Assignment getReferenceAssignment_3() { return cReferenceAssignment_3; }
 		
 		//'&'
@@ -13156,13 +15926,13 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_5_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_5_0; }
 		
-		//('=' defaultValue=Expression)?
+		//( '=' defaultValue=Expression )?
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//'='
@@ -13174,10 +15944,12 @@
 		//Expression
 		public RuleCall getDefaultValueExpressionParserRuleCall_6_1_0() { return cDefaultValueExpressionParserRuleCall_6_1_0; }
 		
-		//('{' onWriteAction=OnWriteRoutine '}' | ';')
+		//( ( '{' onWriteAction=OnWriteRoutine  '}' )
+		//| ';'
+		//)
 		public Alternatives getAlternatives_7() { return cAlternatives_7; }
 		
-		//'{' onWriteAction=OnWriteRoutine '}'
+		//( '{' onWriteAction=OnWriteRoutine  '}' )
 		public Group getGroup_7_0() { return cGroup_7_0; }
 		
 		//'{'
@@ -13210,19 +15982,24 @@
 		private final Assignment cBodyBlockAssignment_3 = (Assignment)cGroup.eContents().get(3);
 		private final RuleCall cBodyBlockBlockStatementParserRuleCall_3_0 = (RuleCall)cBodyBlockAssignment_3.eContents().get(0);
 		
-		//OnWriteRoutine fmlInfra::Routine:
-		//	{fmlInfra::Routine} ('@write' | '@on_write') ('(' parameterSet=VariableRoutineParameterSet ')')?
-		//	bodyBlock=BlockStatement;
+		//OnWriteRoutine returns fmlInfra::Routine
+		//    : { fmlInfra::Routine }
+		//        ( '@write' | '@on_write' )
+		//        ( '(' parameterSet=VariableRoutineParameterSet ')' )?
+		//        bodyBlock=BlockStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Routine} ('@write' | '@on_write') ('(' parameterSet=VariableRoutineParameterSet ')')?
-		//bodyBlock=BlockStatement
+		//{ fmlInfra::Routine }
+		//       ( '@write' | '@on_write' )
+		//       ( '(' parameterSet=VariableRoutineParameterSet ')' )?
+		//       bodyBlock=BlockStatement
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlInfra::Routine}
+		//{ fmlInfra::Routine }
 		public Action getRoutineAction_0() { return cRoutineAction_0; }
 		
-		//('@write' | '@on_write')
+		//( '@write' | '@on_write' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'@write'
@@ -13231,7 +16008,7 @@
 		//'@on_write'
 		public Keyword getOn_writeKeyword_1_1() { return cOn_writeKeyword_1_1; }
 		
-		//('(' parameterSet=VariableRoutineParameterSet ')')?
+		//( '(' parameterSet=VariableRoutineParameterSet ')' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'('
@@ -13259,11 +16036,14 @@
 		private final Assignment cParameterAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cParameterVariableRoutineParameterParserRuleCall_1_0 = (RuleCall)cParameterAssignment_1.eContents().get(0);
 		
-		//VariableRoutineParameterSet fmlInfra::ParameterSet:
-		//	{fmlInfra::ParameterSet} parameter+=VariableRoutineParameter;
+		//VariableRoutineParameterSet returns fmlInfra::ParameterSet
+		//    : {fmlInfra::ParameterSet}
+		//        parameter+=VariableRoutineParameter
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ParameterSet} parameter+=VariableRoutineParameter
+		//{fmlInfra::ParameterSet}
+		//       parameter+=VariableRoutineParameter
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::ParameterSet}
@@ -13290,26 +16070,32 @@
 		private final Assignment cDefaultValueAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
 		private final RuleCall cDefaultValueExpressionParserRuleCall_4_1_0 = (RuleCall)cDefaultValueAssignment_4_1.eContents().get(0);
 		
-		//VariableRoutineParameter fmlInfra::Parameter:
-		//	FormalParameterOffset?
-		//	direction=ParameterDirectionKind?
-		//	type=DataType?
-		//	name=ESIdentifier ('=' defaultValue=Expression)?;
+		//VariableRoutineParameter returns fmlInfra::Parameter
+		//    : ( FormalParameterOffset )?
+		//        ( direction=ParameterDirectionKind )?
+		//        ( type=DataType )?
+		//        name=ESIdentifier
+		//        ( '=' defaultValue=Expression )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//FormalParameterOffset? direction=ParameterDirectionKind? type=DataType? name=ESIdentifier ('=' defaultValue=Expression)?
+		//( FormalParameterOffset )?
+		//       ( direction=ParameterDirectionKind )?
+		//       ( type=DataType )?
+		//       name=ESIdentifier
+		//       ( '=' defaultValue=Expression )?
 		public Group getGroup() { return cGroup; }
 		
-		//FormalParameterOffset?
+		//( FormalParameterOffset )?
 		public RuleCall getFormalParameterOffsetParserRuleCall_0() { return cFormalParameterOffsetParserRuleCall_0; }
 		
-		//direction=ParameterDirectionKind?
+		//( direction=ParameterDirectionKind )?
 		public Assignment getDirectionAssignment_1() { return cDirectionAssignment_1; }
 		
 		//ParameterDirectionKind
 		public RuleCall getDirectionParameterDirectionKindEnumRuleCall_1_0() { return cDirectionParameterDirectionKindEnumRuleCall_1_0; }
 		
-		//type=DataType?
+		//( type=DataType )?
 		public Assignment getTypeAssignment_2() { return cTypeAssignment_2; }
 		
 		//DataType
@@ -13321,7 +16107,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//('=' defaultValue=Expression)?
+		//( '=' defaultValue=Expression )?
 		public Group getGroup_4() { return cGroup_4; }
 		
 		//'='
@@ -13337,8 +16123,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.VariablePublic");
 		private final RuleCall cVariableImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//VariablePublic fmlInfra::Variable:
-		//	VariableImpl;
+		//VariablePublic returns fmlInfra::Variable
+		//    : VariableImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//VariableImpl
@@ -13348,8 +16135,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.VariableProtected");
 		private final RuleCall cVariableImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//VariableProtected fmlInfra::Variable:
-		//	VariableImpl;
+		//VariableProtected returns fmlInfra::Variable
+		//    : VariableImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//VariableImpl
@@ -13359,8 +16147,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.VariablePrivate");
 		private final RuleCall cVariableImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//VariablePrivate fmlInfra::Variable:
-		//	VariableImpl;
+		//VariablePrivate returns fmlInfra::Variable
+		//    : VariableImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//VariableImpl
@@ -13377,11 +16166,16 @@
 		private final Assignment cParameterAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
 		private final RuleCall cParameterFunctionalParameterParserRuleCall_2_1_0 = (RuleCall)cParameterAssignment_2_1.eContents().get(0);
 		
-		//FunctionalParameterSet fmlInfra::ParameterSet:
-		//	{fmlInfra::ParameterSet} parameter+=FunctionalParameter (',' parameter+=FunctionalParameter)*;
+		//FunctionalParameterSet returns fmlInfra::ParameterSet
+		//    : {fmlInfra::ParameterSet}
+		//        parameter+=FunctionalParameter
+		//        ( ',' parameter+=FunctionalParameter )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ParameterSet} parameter+=FunctionalParameter (',' parameter+=FunctionalParameter)*
+		//{fmlInfra::ParameterSet}
+		//       parameter+=FunctionalParameter
+		//       ( ',' parameter+=FunctionalParameter )*
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::ParameterSet}
@@ -13393,7 +16187,7 @@
 		//FunctionalParameter
 		public RuleCall getParameterFunctionalParameterParserRuleCall_1_0() { return cParameterFunctionalParameterParserRuleCall_1_0; }
 		
-		//(',' parameter+=FunctionalParameter)*
+		//( ',' parameter+=FunctionalParameter )*
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//','
@@ -13420,18 +16214,24 @@
 		private final Assignment cDefaultValueAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
 		private final RuleCall cDefaultValueExpressionParserRuleCall_4_1_0 = (RuleCall)cDefaultValueAssignment_4_1.eContents().get(0);
 		
-		//FunctionalParameter fmlInfra::Parameter:
-		//	{fmlInfra::Parameter} direction=ParameterDirectionKind? type=DataType
-		//	name=ESIdentifier ('=' defaultValue=Expression)?;
+		//FunctionalParameter returns fmlInfra::Parameter
+		//    : {fmlInfra::Parameter}
+		//        ( direction=ParameterDirectionKind )?  type=DataType
+		//         name=ESIdentifier
+		//        ( '=' defaultValue=Expression )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Parameter} direction=ParameterDirectionKind? type=DataType name=ESIdentifier ('=' defaultValue=Expression)?
+		//{fmlInfra::Parameter}
+		//       ( direction=ParameterDirectionKind )?  type=DataType
+		//        name=ESIdentifier
+		//       ( '=' defaultValue=Expression )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Parameter}
 		public Action getParameterAction_0() { return cParameterAction_0; }
 		
-		//direction=ParameterDirectionKind?
+		//( direction=ParameterDirectionKind )?
 		public Assignment getDirectionAssignment_1() { return cDirectionAssignment_1; }
 		
 		//ParameterDirectionKind
@@ -13449,7 +16249,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//('=' defaultValue=Expression)?
+		//( '=' defaultValue=Expression )?
 		public Group getGroup_4() { return cGroup_4; }
 		
 		//'='
@@ -13472,11 +16272,16 @@
 		private final Assignment cParameterAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
 		private final RuleCall cParameterFormalParameterParserRuleCall_2_1_0 = (RuleCall)cParameterAssignment_2_1.eContents().get(0);
 		
-		//FormalParameterSet fmlInfra::ParameterSet:
-		//	{fmlInfra::ParameterSet} parameter+=FormalParameter (',' parameter+=FormalParameter)*;
+		//FormalParameterSet returns fmlInfra::ParameterSet
+		//    : {fmlInfra::ParameterSet}
+		//        parameter+=FormalParameter
+		//        ( ',' parameter+=FormalParameter )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ParameterSet} parameter+=FormalParameter (',' parameter+=FormalParameter)*
+		//{fmlInfra::ParameterSet}
+		//       parameter+=FormalParameter
+		//       ( ',' parameter+=FormalParameter )*
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::ParameterSet}
@@ -13488,7 +16293,7 @@
 		//FormalParameter
 		public RuleCall getParameterFormalParameterParserRuleCall_1_0() { return cParameterFormalParameterParserRuleCall_1_0; }
 		
-		//(',' parameter+=FormalParameter)*
+		//( ',' parameter+=FormalParameter )*
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//','
@@ -13518,29 +16323,35 @@
 		private final Assignment cDefaultValueAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
 		private final RuleCall cDefaultValueExpressionParserRuleCall_6_1_0 = (RuleCall)cDefaultValueAssignment_6_1.eContents().get(0);
 		
-		//FormalParameter fmlInfra::Parameter:
-		//	{fmlInfra::Parameter} FormalParameterOffset?
-		//	direction=ParameterDirectionKind? modifier=Modifier?
-		//	type=DataType name=ESIdentifier? ('=' defaultValue=Expression)?;
+		//FormalParameter returns fmlInfra::Parameter
+		//    : {fmlInfra::Parameter}
+		//        ( FormalParameterOffset )?
+		//        ( direction=ParameterDirectionKind )? ( modifier=Modifier )?
+		//        type=DataType  ( name=ESIdentifier )?
+		//        ( '=' defaultValue=Expression )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Parameter} FormalParameterOffset? direction=ParameterDirectionKind? modifier=Modifier? type=DataType
-		//name=ESIdentifier? ('=' defaultValue=Expression)?
+		//{fmlInfra::Parameter}
+		//       ( FormalParameterOffset )?
+		//       ( direction=ParameterDirectionKind )? ( modifier=Modifier )?
+		//       type=DataType  ( name=ESIdentifier )?
+		//       ( '=' defaultValue=Expression )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Parameter}
 		public Action getParameterAction_0() { return cParameterAction_0; }
 		
-		//FormalParameterOffset?
+		//( FormalParameterOffset )?
 		public RuleCall getFormalParameterOffsetParserRuleCall_1() { return cFormalParameterOffsetParserRuleCall_1; }
 		
-		//direction=ParameterDirectionKind?
+		//( direction=ParameterDirectionKind )?
 		public Assignment getDirectionAssignment_2() { return cDirectionAssignment_2; }
 		
 		//ParameterDirectionKind
 		public RuleCall getDirectionParameterDirectionKindEnumRuleCall_2_0() { return cDirectionParameterDirectionKindEnumRuleCall_2_0; }
 		
-		//modifier=Modifier?
+		//( modifier=Modifier )?
 		public Assignment getModifierAssignment_3() { return cModifierAssignment_3; }
 		
 		//Modifier
@@ -13552,13 +16363,13 @@
 		//DataType
 		public RuleCall getTypeDataTypeParserRuleCall_4_0() { return cTypeDataTypeParserRuleCall_4_0; }
 		
-		//name=ESIdentifier?
+		//( name=ESIdentifier )?
 		public Assignment getNameAssignment_5() { return cNameAssignment_5; }
 		
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_5_0() { return cNameESIdentifierParserRuleCall_5_0; }
 		
-		//('=' defaultValue=Expression)?
+		//( '=' defaultValue=Expression )?
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//'='
@@ -13574,8 +16385,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.FormalParameterOffset");
 		private final RuleCall cEOffsetParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//FormalParameterOffset:
-		//	EOffset;
+		//FormalParameterOffset
+		//    : EOffset
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//EOffset
@@ -13630,34 +16442,82 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Block ParameterSet Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//BlockParameterSet fmlInfra::ParameterSet:
-		//	{fmlInfra::ParameterSet} ('input' (parameter+=ParameterInput
-		//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-		//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-		//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-		//	| '{' parameter+=ParameterReturn+ '}'))*;
+		//BlockParameterSet returns fmlInfra::ParameterSet
+		//    : {fmlInfra::ParameterSet}
+		//        ( 'input'
+		//            ( parameter+=ParameterInput
+		//            | '{' ( parameter+=ParameterInput )+ '}'
+		//            )
+		//        | 'inout'
+		//            ( parameter+=ParameterInout
+		//            | '{' ( parameter+=ParameterInout )+ '}'
+		//            )
+		//        | 'output'
+		//            ( parameter+=ParameterOutput
+		//            | '{' ( parameter+=ParameterOutput )+ '}'
+		//            )
+		//        | 'return'
+		//            ( parameter+=ParameterReturn
+		//            | '{' ( parameter+=ParameterReturn )+ '}'
+		//            )
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::ParameterSet} ('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout'
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{'
-		//parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		//{fmlInfra::ParameterSet}
+		//       ( 'input'
+		//           ( parameter+=ParameterInput
+		//           | '{' ( parameter+=ParameterInput )+ '}'
+		//           )
+		//       | 'inout'
+		//           ( parameter+=ParameterInout
+		//           | '{' ( parameter+=ParameterInout )+ '}'
+		//           )
+		//       | 'output'
+		//           ( parameter+=ParameterOutput
+		//           | '{' ( parameter+=ParameterOutput )+ '}'
+		//           )
+		//       | 'return'
+		//           ( parameter+=ParameterReturn
+		//           | '{' ( parameter+=ParameterReturn )+ '}'
+		//           )
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::ParameterSet}
 		public Action getParameterSetAction_0() { return cParameterSetAction_0; }
 		
-		//('input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout | '{'
-		//parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}') |
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}'))*
+		//( 'input'
+		//    ( parameter+=ParameterInput
+		//    | '{' ( parameter+=ParameterInput )+ '}'
+		//    )
+		//| 'inout'
+		//    ( parameter+=ParameterInout
+		//    | '{' ( parameter+=ParameterInout )+ '}'
+		//    )
+		//| 'output'
+		//    ( parameter+=ParameterOutput
+		//    | '{' ( parameter+=ParameterOutput )+ '}'
+		//    )
+		//| 'return'
+		//    ( parameter+=ParameterReturn
+		//    | '{' ( parameter+=ParameterReturn )+ '}'
+		//    )
+		//)*
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//'input' (parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//'input'
+		//           ( parameter+=ParameterInput
+		//           | '{' ( parameter+=ParameterInput )+ '}'
+		//           )
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//'input'
 		public Keyword getInputKeyword_1_0_0() { return cInputKeyword_1_0_0; }
 		
-		//(parameter+=ParameterInput | '{' parameter+=ParameterInput+ '}')
+		//( parameter+=ParameterInput
+		//| '{' ( parameter+=ParameterInput )+ '}'
+		//)
 		public Alternatives getAlternatives_1_0_1() { return cAlternatives_1_0_1; }
 		
 		//parameter+=ParameterInput
@@ -13666,13 +16526,13 @@
 		//ParameterInput
 		public RuleCall getParameterParameterInputParserRuleCall_1_0_1_0_0() { return cParameterParameterInputParserRuleCall_1_0_1_0_0; }
 		
-		//'{' parameter+=ParameterInput+ '}'
+		//'{' ( parameter+=ParameterInput )+ '}'
 		public Group getGroup_1_0_1_1() { return cGroup_1_0_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_0_1_1_0() { return cLeftCurlyBracketKeyword_1_0_1_1_0; }
 		
-		//parameter+=ParameterInput+
+		//( parameter+=ParameterInput )+
 		public Assignment getParameterAssignment_1_0_1_1_1() { return cParameterAssignment_1_0_1_1_1; }
 		
 		//ParameterInput
@@ -13681,13 +16541,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_1_0_1_1_2() { return cRightCurlyBracketKeyword_1_0_1_1_2; }
 		
-		//'inout' (parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//'inout'
+		//           ( parameter+=ParameterInout
+		//           | '{' ( parameter+=ParameterInout )+ '}'
+		//           )
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'inout'
 		public Keyword getInoutKeyword_1_1_0() { return cInoutKeyword_1_1_0; }
 		
-		//(parameter+=ParameterInout | '{' parameter+=ParameterInout+ '}')
+		//( parameter+=ParameterInout
+		//| '{' ( parameter+=ParameterInout )+ '}'
+		//)
 		public Alternatives getAlternatives_1_1_1() { return cAlternatives_1_1_1; }
 		
 		//parameter+=ParameterInout
@@ -13696,13 +16561,13 @@
 		//ParameterInout
 		public RuleCall getParameterParameterInoutParserRuleCall_1_1_1_0_0() { return cParameterParameterInoutParserRuleCall_1_1_1_0_0; }
 		
-		//'{' parameter+=ParameterInout+ '}'
+		//'{' ( parameter+=ParameterInout )+ '}'
 		public Group getGroup_1_1_1_1() { return cGroup_1_1_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_1_1_1_0() { return cLeftCurlyBracketKeyword_1_1_1_1_0; }
 		
-		//parameter+=ParameterInout+
+		//( parameter+=ParameterInout )+
 		public Assignment getParameterAssignment_1_1_1_1_1() { return cParameterAssignment_1_1_1_1_1; }
 		
 		//ParameterInout
@@ -13711,13 +16576,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_1_1_1_1_2() { return cRightCurlyBracketKeyword_1_1_1_1_2; }
 		
-		//'output' (parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//'output'
+		//           ( parameter+=ParameterOutput
+		//           | '{' ( parameter+=ParameterOutput )+ '}'
+		//           )
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//'output'
 		public Keyword getOutputKeyword_1_2_0() { return cOutputKeyword_1_2_0; }
 		
-		//(parameter+=ParameterOutput | '{' parameter+=ParameterOutput+ '}')
+		//( parameter+=ParameterOutput
+		//| '{' ( parameter+=ParameterOutput )+ '}'
+		//)
 		public Alternatives getAlternatives_1_2_1() { return cAlternatives_1_2_1; }
 		
 		//parameter+=ParameterOutput
@@ -13726,13 +16596,13 @@
 		//ParameterOutput
 		public RuleCall getParameterParameterOutputParserRuleCall_1_2_1_0_0() { return cParameterParameterOutputParserRuleCall_1_2_1_0_0; }
 		
-		//'{' parameter+=ParameterOutput+ '}'
+		//'{' ( parameter+=ParameterOutput )+ '}'
 		public Group getGroup_1_2_1_1() { return cGroup_1_2_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_2_1_1_0() { return cLeftCurlyBracketKeyword_1_2_1_1_0; }
 		
-		//parameter+=ParameterOutput+
+		//( parameter+=ParameterOutput )+
 		public Assignment getParameterAssignment_1_2_1_1_1() { return cParameterAssignment_1_2_1_1_1; }
 		
 		//ParameterOutput
@@ -13741,13 +16611,18 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_1_2_1_1_2() { return cRightCurlyBracketKeyword_1_2_1_1_2; }
 		
-		//'return' (parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//'return'
+		//           ( parameter+=ParameterReturn
+		//           | '{' ( parameter+=ParameterReturn )+ '}'
+		//           )
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//'return'
 		public Keyword getReturnKeyword_1_3_0() { return cReturnKeyword_1_3_0; }
 		
-		//(parameter+=ParameterReturn | '{' parameter+=ParameterReturn+ '}')
+		//( parameter+=ParameterReturn
+		//| '{' ( parameter+=ParameterReturn )+ '}'
+		//)
 		public Alternatives getAlternatives_1_3_1() { return cAlternatives_1_3_1; }
 		
 		//parameter+=ParameterReturn
@@ -13756,13 +16631,13 @@
 		//ParameterReturn
 		public RuleCall getParameterParameterReturnParserRuleCall_1_3_1_0_0() { return cParameterParameterReturnParserRuleCall_1_3_1_0_0; }
 		
-		//'{' parameter+=ParameterReturn+ '}'
+		//'{' ( parameter+=ParameterReturn )+ '}'
 		public Group getGroup_1_3_1_1() { return cGroup_1_3_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1_3_1_1_0() { return cLeftCurlyBracketKeyword_1_3_1_1_0; }
 		
-		//parameter+=ParameterReturn+
+		//( parameter+=ParameterReturn )+
 		public Assignment getParameterAssignment_1_3_1_1_1() { return cParameterAssignment_1_3_1_1_1; }
 		
 		//ParameterReturn
@@ -13792,21 +16667,28 @@
 		private final RuleCall cDefaultValueExpressionParserRuleCall_7_1_0 = (RuleCall)cDefaultValueAssignment_7_1.eContents().get(0);
 		private final Keyword cSemicolonKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		
-		//Parameter fmlInfra::Parameter:
-		//	{fmlInfra::Parameter} visibility=VisibilityKind?
-		//	direction=ParameterDirectionKind
-		//	'var' type=DataType
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ';';
+		//Parameter returns fmlInfra::Parameter
+		//    : {fmlInfra::Parameter}
+		//        ( visibility=VisibilityKind )?
+		//        direction=ParameterDirectionKind
+		//        'var'  type=DataType
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( '=' defaultValue=Expression )?  ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Parameter} visibility=VisibilityKind? direction=ParameterDirectionKind 'var' type=DataType name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ';'
+		//{fmlInfra::Parameter}
+		//       ( visibility=VisibilityKind )?
+		//       direction=ParameterDirectionKind
+		//       'var'  type=DataType
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( '=' defaultValue=Expression )?  ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Parameter}
 		public Action getParameterAction_0() { return cParameterAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
@@ -13833,13 +16715,13 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_5_0() { return cNameESIdentifierParserRuleCall_5_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_6() { return cUnrestrictedNameAssignment_6; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_6_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_6_0; }
 		
-		//('=' defaultValue=Expression)?
+		//( '=' defaultValue=Expression )?
 		public Group getGroup_7() { return cGroup_7; }
 		
 		//'='
@@ -13871,14 +16753,18 @@
 		private final RuleCall cDefaultValueExpressionParserRuleCall_5_1_0 = (RuleCall)cDefaultValueAssignment_5_1.eContents().get(0);
 		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
-		//ParameterImpl fmlInfra::Parameter:
-		//	{fmlInfra::Parameter}
-		//	'var' type=DataType
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ';';
+		//ParameterImpl returns fmlInfra::Parameter
+		//    : {fmlInfra::Parameter}
+		//        'var'  type=DataType
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( '=' defaultValue=Expression )?  ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Parameter} 'var' type=DataType name=ESIdentifier unrestrictedName=UnrestrictedName? ('='
-		//defaultValue=Expression)? ';'
+		//{fmlInfra::Parameter}
+		//       'var'  type=DataType
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( '=' defaultValue=Expression )?  ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Parameter}
@@ -13899,13 +16785,13 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//('=' defaultValue=Expression)?
+		//( '=' defaultValue=Expression )?
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//'='
@@ -13924,8 +16810,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ParameterInput");
 		private final RuleCall cParameterImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ParameterInput fmlInfra::Parameter:
-		//	ParameterImpl;
+		//ParameterInput returns fmlInfra::Parameter
+		//    : ParameterImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//ParameterImpl
@@ -13935,8 +16822,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ParameterInout");
 		private final RuleCall cParameterImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ParameterInout fmlInfra::Parameter:
-		//	ParameterImpl;
+		//ParameterInout returns fmlInfra::Parameter
+		//    : ParameterImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//ParameterImpl
@@ -13946,8 +16834,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ParameterOutput");
 		private final RuleCall cParameterImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ParameterOutput fmlInfra::Parameter:
-		//	ParameterImpl;
+		//ParameterOutput returns fmlInfra::Parameter
+		//    : ParameterImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//ParameterImpl
@@ -13957,8 +16846,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ParameterReturn");
 		private final RuleCall cParameterImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ParameterReturn fmlInfra::Parameter:
-		//	ParameterImpl;
+		//ParameterReturn returns fmlInfra::Parameter
+		//    : ParameterImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//ParameterImpl
@@ -13995,40 +16885,49 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Buffer Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//BufferContainerType fmlType::CollectionType:
-		//	{fmlType::CollectionType} container=BufferContainerKind ('<' ('size:'? size=EInt | unbounded?='*')? '>'
-		//	| '[' ('size:'? size=EInt | unbounded?='*')? ']')?;
+		//BufferContainerType returns fmlType::CollectionType
+		//    : {fmlType::CollectionType}
+		//        container = BufferContainerKind
+		//        ( '<' ( ( 'size:' )? size=EInt | unbounded?='*' )? '>'
+		//        | '[' ( ( 'size:' )? size=EInt | unbounded?='*' )? ']'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::CollectionType} container=BufferContainerKind ('<' ('size:'? size=EInt | unbounded?='*')? '>' | '[' ('size:'?
-		//size=EInt | unbounded?='*')? ']')?
+		//{fmlType::CollectionType}
+		//       container = BufferContainerKind
+		//       ( '<' ( ( 'size:' )? size=EInt | unbounded?='*' )? '>'
+		//       | '[' ( ( 'size:' )? size=EInt | unbounded?='*' )? ']'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlType::CollectionType}
 		public Action getCollectionTypeAction_0() { return cCollectionTypeAction_0; }
 		
-		//container=BufferContainerKind
+		//container = BufferContainerKind
 		public Assignment getContainerAssignment_1() { return cContainerAssignment_1; }
 		
 		//BufferContainerKind
 		public RuleCall getContainerBufferContainerKindEnumRuleCall_1_0() { return cContainerBufferContainerKindEnumRuleCall_1_0; }
 		
-		//('<' ('size:'? size=EInt | unbounded?='*')? '>' | '[' ('size:'? size=EInt | unbounded?='*')? ']')?
+		//( '<' ( ( 'size:' )? size=EInt | unbounded?='*' )? '>'
+		//| '[' ( ( 'size:' )? size=EInt | unbounded?='*' )? ']'
+		//)?
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//'<' ('size:'? size=EInt | unbounded?='*')? '>'
+		//'<' ( ( 'size:' )? size=EInt | unbounded?='*' )? '>'
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0_0() { return cLessThanSignKeyword_2_0_0; }
 		
-		//('size:'? size=EInt | unbounded?='*')?
+		//( ( 'size:' )? size=EInt | unbounded?='*' )?
 		public Alternatives getAlternatives_2_0_1() { return cAlternatives_2_0_1; }
 		
-		//'size:'? size=EInt
+		//( 'size:' )? size=EInt
 		public Group getGroup_2_0_1_0() { return cGroup_2_0_1_0; }
 		
-		//'size:'?
+		//( 'size:' )?
 		public Keyword getSizeKeyword_2_0_1_0_0() { return cSizeKeyword_2_0_1_0_0; }
 		
 		//size=EInt
@@ -14046,19 +16945,19 @@
 		//'>'
 		public Keyword getGreaterThanSignKeyword_2_0_2() { return cGreaterThanSignKeyword_2_0_2; }
 		
-		//'[' ('size:'? size=EInt | unbounded?='*')? ']'
+		//'[' ( ( 'size:' )? size=EInt | unbounded?='*' )? ']'
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'['
 		public Keyword getLeftSquareBracketKeyword_2_1_0() { return cLeftSquareBracketKeyword_2_1_0; }
 		
-		//('size:'? size=EInt | unbounded?='*')?
+		//( ( 'size:' )? size=EInt | unbounded?='*' )?
 		public Alternatives getAlternatives_2_1_1() { return cAlternatives_2_1_1; }
 		
-		//'size:'? size=EInt
+		//( 'size:' )? size=EInt
 		public Group getGroup_2_1_1_0() { return cGroup_2_1_1_0; }
 		
-		//'size:'?
+		//( 'size:' )?
 		public Keyword getSizeKeyword_2_1_1_0_0() { return cSizeKeyword_2_1_1_0_0; }
 		
 		//size=EInt
@@ -14094,21 +16993,30 @@
 		private final RuleCall cUnrestrictedNameUnrestrictedNameParserRuleCall_5_0 = (RuleCall)cUnrestrictedNameAssignment_5.eContents().get(0);
 		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
-		//Buffer fmlInfra::Buffer:
-		//	{fmlInfra::Buffer} (visibility=VisibilityKind
-		//	& modifier=Modifier)?
-		//	'buffer' type=BufferContainerType
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ';';
+		//Buffer returns fmlInfra::Buffer
+		//    : {fmlInfra::Buffer}
+		//        ( visibility=VisibilityKind
+		//          & modifier=Modifier
+		//        )?
+		//        'buffer' type=BufferContainerType
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )? ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Buffer} (visibility=VisibilityKind & modifier=Modifier)? 'buffer' type=BufferContainerType name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ';'
+		//{fmlInfra::Buffer}
+		//       ( visibility=VisibilityKind
+		//         & modifier=Modifier
+		//       )?
+		//       'buffer' type=BufferContainerType
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )? ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Buffer}
 		public Action getBufferAction_0() { return cBufferAction_0; }
 		
-		//(visibility=VisibilityKind & modifier=Modifier)?
+		//( visibility=VisibilityKind
+		//  & modifier=Modifier
+		//)?
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
 		//visibility=VisibilityKind
@@ -14138,7 +17046,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
@@ -14162,20 +17070,24 @@
 		private final RuleCall cUnrestrictedNameUnrestrictedNameParserRuleCall_5_0 = (RuleCall)cUnrestrictedNameAssignment_5.eContents().get(0);
 		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
-		//BufferImpl fmlInfra::Buffer:
-		//	{fmlInfra::Buffer} modifier=Modifier?
-		//	'buffer' type=BufferContainerType
-		//	name=ESIdentifier unrestrictedName=UnrestrictedName? ';';
+		//BufferImpl returns fmlInfra::Buffer
+		//    : {fmlInfra::Buffer}
+		//        ( modifier=Modifier )?
+		//        'buffer' type=BufferContainerType
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )? ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Buffer} modifier=Modifier? 'buffer' type=BufferContainerType name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ';'
+		//{fmlInfra::Buffer}
+		//       ( modifier=Modifier )?
+		//       'buffer' type=BufferContainerType
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )? ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Buffer}
 		public Action getBufferAction_0() { return cBufferAction_0; }
 		
-		//modifier=Modifier?
+		//( modifier=Modifier )?
 		public Assignment getModifierAssignment_1() { return cModifierAssignment_1; }
 		
 		//Modifier
@@ -14196,7 +17108,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
@@ -14209,8 +17121,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.BufferPublic");
 		private final RuleCall cBufferImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//BufferPublic fmlInfra::Buffer:
-		//	BufferImpl;
+		//BufferPublic returns fmlInfra::Buffer
+		//    : BufferImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//BufferImpl
@@ -14220,8 +17133,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.BufferProtected");
 		private final RuleCall cBufferImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//BufferProtected fmlInfra::Buffer:
-		//	BufferImpl;
+		//BufferProtected returns fmlInfra::Buffer
+		//    : BufferImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//BufferImpl
@@ -14231,8 +17145,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.BufferPrivate");
 		private final RuleCall cBufferImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//BufferPrivate fmlInfra::Buffer:
-		//	BufferImpl;
+		//BufferPrivate returns fmlInfra::Buffer
+		//    : BufferImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//BufferImpl
@@ -14270,23 +17185,38 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Port rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Port fmlInfra::Port:
-		//	{fmlInfra::Port} (visibility=VisibilityKind
-		//	& modifier=Modifier)? (direction=ChannelDirection 'port'
-		//	| 'port' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-		//	parameterSet=FormalParameterSet? ')')?
-		//	';';
+		//Port returns fmlInfra::Port
+		//    : {fmlInfra::Port}
+		//        ( visibility=VisibilityKind
+		//          & modifier=Modifier
+		//        )?
+		//        ( direction=ChannelDirection  'port'
+		//        | 'port'  ( direction=ChannelDirection )?
+		//        )
+		//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Port} (visibility=VisibilityKind & modifier=Modifier)? (direction=ChannelDirection 'port' | 'port'
-		//direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet?
-		//')')? ';'
+		//{fmlInfra::Port}
+		//       ( visibility=VisibilityKind
+		//         & modifier=Modifier
+		//       )?
+		//       ( direction=ChannelDirection  'port'
+		//       | 'port'  ( direction=ChannelDirection )?
+		//       )
+		//       name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Port}
 		public Action getPortAction_0() { return cPortAction_0; }
 		
-		//(visibility=VisibilityKind & modifier=Modifier)?
+		//( visibility=VisibilityKind
+		//  & modifier=Modifier
+		//)?
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
 		//visibility=VisibilityKind
@@ -14301,10 +17231,12 @@
 		//Modifier
 		public RuleCall getModifierModifierParserRuleCall_1_1_0() { return cModifierModifierParserRuleCall_1_1_0; }
 		
-		//(direction=ChannelDirection 'port' | 'port' direction=ChannelDirection?)
+		//( direction=ChannelDirection  'port'
+		//| 'port'  ( direction=ChannelDirection )?
+		//)
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//direction=ChannelDirection 'port'
+		//direction=ChannelDirection  'port'
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//direction=ChannelDirection
@@ -14316,13 +17248,13 @@
 		//'port'
 		public Keyword getPortKeyword_2_0_1() { return cPortKeyword_2_0_1; }
 		
-		//'port' direction=ChannelDirection?
+		//'port'  ( direction=ChannelDirection )?
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'port'
 		public Keyword getPortKeyword_2_1_0() { return cPortKeyword_2_1_0; }
 		
-		//direction=ChannelDirection?
+		//( direction=ChannelDirection )?
 		public Assignment getDirectionAssignment_2_1_1() { return cDirectionAssignment_2_1_1; }
 		
 		//ChannelDirection
@@ -14334,19 +17266,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_5_1() { return cParameterSetAssignment_5_1; }
 		
 		//FormalParameterSet
@@ -14384,30 +17316,43 @@
 		private final Keyword cRightParenthesisKeyword_5_2 = (Keyword)cGroup_5.eContents().get(2);
 		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
-		//PortImpl fmlInfra::Port:
-		//	{fmlInfra::Port} modifier=Modifier? (direction=ChannelDirection 'port'
-		//	| 'port' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-		//	parameterSet=FormalParameterSet? ')')?
-		//	';';
+		//PortImpl returns fmlInfra::Port
+		//    : {fmlInfra::Port}
+		//        ( modifier=Modifier )?
+		//        ( direction=ChannelDirection  'port'
+		//        | 'port'  ( direction=ChannelDirection )?
+		//        )
+		//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Port} modifier=Modifier? (direction=ChannelDirection 'port' | 'port' direction=ChannelDirection?)
-		//name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')? ';'
+		//{fmlInfra::Port}
+		//       ( modifier=Modifier )?
+		//       ( direction=ChannelDirection  'port'
+		//       | 'port'  ( direction=ChannelDirection )?
+		//       )
+		//       name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Port}
 		public Action getPortAction_0() { return cPortAction_0; }
 		
-		//modifier=Modifier?
+		//( modifier=Modifier )?
 		public Assignment getModifierAssignment_1() { return cModifierAssignment_1; }
 		
 		//Modifier
 		public RuleCall getModifierModifierParserRuleCall_1_0() { return cModifierModifierParserRuleCall_1_0; }
 		
-		//(direction=ChannelDirection 'port' | 'port' direction=ChannelDirection?)
+		//( direction=ChannelDirection  'port'
+		//| 'port'  ( direction=ChannelDirection )?
+		//)
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//direction=ChannelDirection 'port'
+		//direction=ChannelDirection  'port'
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//direction=ChannelDirection
@@ -14419,13 +17364,13 @@
 		//'port'
 		public Keyword getPortKeyword_2_0_1() { return cPortKeyword_2_0_1; }
 		
-		//'port' direction=ChannelDirection?
+		//'port'  ( direction=ChannelDirection )?
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'port'
 		public Keyword getPortKeyword_2_1_0() { return cPortKeyword_2_1_0; }
 		
-		//direction=ChannelDirection?
+		//( direction=ChannelDirection )?
 		public Assignment getDirectionAssignment_2_1_1() { return cDirectionAssignment_2_1_1; }
 		
 		//ChannelDirection
@@ -14437,19 +17382,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_5_1() { return cParameterSetAssignment_5_1; }
 		
 		//FormalParameterSet
@@ -14465,8 +17410,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.PortPublic");
 		private final RuleCall cPortImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//PortPublic fmlInfra::Port:
-		//	PortImpl;
+		//PortPublic returns fmlInfra::Port
+		//    : PortImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//PortImpl
@@ -14476,8 +17422,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.PortProtected");
 		private final RuleCall cPortImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//PortProtected fmlInfra::Port:
-		//	PortImpl;
+		//PortProtected returns fmlInfra::Port
+		//    : PortImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//PortImpl
@@ -14487,8 +17434,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.PortPrivate");
 		private final RuleCall cPortImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//PortPrivate fmlInfra::Port:
-		//	PortImpl;
+		//PortPrivate returns fmlInfra::Port
+		//    : PortImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//PortImpl
@@ -14523,31 +17471,43 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Signal rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Signal fmlInfra::Signal:
-		//	{fmlInfra::Signal} visibility=VisibilityKind? (direction=ChannelDirection 'signal'
-		//	| 'signal' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-		//	parameterSet=FormalParameterSet? ')')?
-		//	';';
+		//Signal returns fmlInfra::Signal
+		//    : {fmlInfra::Signal}
+		//        ( visibility=VisibilityKind )?
+		//        ( direction=ChannelDirection  'signal'
+		//        | 'signal'  ( direction=ChannelDirection )?
+		//        )
+		//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Signal} visibility=VisibilityKind? (direction=ChannelDirection 'signal' | 'signal'
-		//direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet?
-		//')')? ';'
+		//{fmlInfra::Signal}
+		//       ( visibility=VisibilityKind )?
+		//       ( direction=ChannelDirection  'signal'
+		//       | 'signal'  ( direction=ChannelDirection )?
+		//       )
+		//       name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Signal}
 		public Action getSignalAction_0() { return cSignalAction_0; }
 		
-		//visibility=VisibilityKind?
+		//( visibility=VisibilityKind )?
 		public Assignment getVisibilityAssignment_1() { return cVisibilityAssignment_1; }
 		
 		//VisibilityKind
 		public RuleCall getVisibilityVisibilityKindEnumRuleCall_1_0() { return cVisibilityVisibilityKindEnumRuleCall_1_0; }
 		
-		//(direction=ChannelDirection 'signal' | 'signal' direction=ChannelDirection?)
+		//( direction=ChannelDirection  'signal'
+		//| 'signal'  ( direction=ChannelDirection )?
+		//)
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//direction=ChannelDirection 'signal'
+		//direction=ChannelDirection  'signal'
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//direction=ChannelDirection
@@ -14559,13 +17519,13 @@
 		//'signal'
 		public Keyword getSignalKeyword_2_0_1() { return cSignalKeyword_2_0_1; }
 		
-		//'signal' direction=ChannelDirection?
+		//'signal'  ( direction=ChannelDirection )?
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//'signal'
 		public Keyword getSignalKeyword_2_1_0() { return cSignalKeyword_2_1_0; }
 		
-		//direction=ChannelDirection?
+		//( direction=ChannelDirection )?
 		public Assignment getDirectionAssignment_2_1_1() { return cDirectionAssignment_2_1_1; }
 		
 		//ChannelDirection
@@ -14577,19 +17537,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_4_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_4_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_5() { return cGroup_5; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_5_0() { return cLeftParenthesisKeyword_5_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_5_1() { return cParameterSetAssignment_5_1; }
 		
 		//FormalParameterSet
@@ -14625,24 +17585,35 @@
 		private final Keyword cRightParenthesisKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
 		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
-		//SignalImpl fmlInfra::Signal:
-		//	{fmlInfra::Signal} (direction=ChannelDirection 'signal'
-		//	| 'signal' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-		//	parameterSet=FormalParameterSet? ')')?
-		//	';';
+		//SignalImpl returns fmlInfra::Signal
+		//    : {fmlInfra::Signal}
+		//        ( direction=ChannelDirection  'signal'
+		//        | 'signal'  ( direction=ChannelDirection )?
+		//        )
+		//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//        ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Signal} (direction=ChannelDirection 'signal' | 'signal' direction=ChannelDirection?) name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')? ';'
+		//{fmlInfra::Signal}
+		//       ( direction=ChannelDirection  'signal'
+		//       | 'signal'  ( direction=ChannelDirection )?
+		//       )
+		//       name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+		//       ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+		//       ';'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Signal}
 		public Action getSignalAction_0() { return cSignalAction_0; }
 		
-		//(direction=ChannelDirection 'signal' | 'signal' direction=ChannelDirection?)
+		//( direction=ChannelDirection  'signal'
+		//| 'signal'  ( direction=ChannelDirection )?
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//direction=ChannelDirection 'signal'
+		//direction=ChannelDirection  'signal'
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//direction=ChannelDirection
@@ -14654,13 +17625,13 @@
 		//'signal'
 		public Keyword getSignalKeyword_1_0_1() { return cSignalKeyword_1_0_1; }
 		
-		//'signal' direction=ChannelDirection?
+		//'signal'  ( direction=ChannelDirection )?
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'signal'
 		public Keyword getSignalKeyword_1_1_0() { return cSignalKeyword_1_1_0; }
 		
-		//direction=ChannelDirection?
+		//( direction=ChannelDirection )?
 		public Assignment getDirectionAssignment_1_1_1() { return cDirectionAssignment_1_1_1; }
 		
 		//ChannelDirection
@@ -14672,19 +17643,19 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_2_0() { return cNameESIdentifierParserRuleCall_2_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_3() { return cUnrestrictedNameAssignment_3; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_3_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_3_0; }
 		
-		//('(' parameterSet=FormalParameterSet? ')')?
+		//( '(' ( parameterSet=FormalParameterSet )? ')' )?
 		public Group getGroup_4() { return cGroup_4; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_4_0() { return cLeftParenthesisKeyword_4_0; }
 		
-		//parameterSet=FormalParameterSet?
+		//( parameterSet=FormalParameterSet )?
 		public Assignment getParameterSetAssignment_4_1() { return cParameterSetAssignment_4_1; }
 		
 		//FormalParameterSet
@@ -14700,8 +17671,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.SignalPublic");
 		private final RuleCall cSignalImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//SignalPublic fmlInfra::Signal:
-		//	SignalImpl;
+		//SignalPublic returns fmlInfra::Signal
+		//    : SignalImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//SignalImpl
@@ -14711,8 +17683,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.SignalProtected");
 		private final RuleCall cSignalImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//SignalProtected fmlInfra::Signal:
-		//	SignalImpl;
+		//SignalProtected returns fmlInfra::Signal
+		//    : SignalImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//SignalImpl
@@ -14722,8 +17695,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.SignalPrivate");
 		private final RuleCall cSignalImplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//SignalPrivate fmlInfra::Signal:
-		//	SignalImpl;
+		//SignalPrivate returns fmlInfra::Signal
+		//    : SignalImpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//SignalImpl
@@ -14750,22 +17724,34 @@
 		private final Keyword cSemicolonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
 		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
-		//Channel fmlInfra::Channel:
-		//	{fmlInfra::Channel} (visibility=VisibilityKind
-		//	& modifier=Modifier)?
-		//	'channel' name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'{' (signal+=SignalReference ';')+
-		//	'}';
+		//Channel returns fmlInfra::Channel
+		//    : {fmlInfra::Channel}
+		//        ( visibility=VisibilityKind
+		//          & modifier=Modifier
+		//        )?
+		//        'channel' name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//            ( signal+=SignalReference ';' )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Channel} (visibility=VisibilityKind & modifier=Modifier)? 'channel' name=ESIdentifier
-		//unrestrictedName=UnrestrictedName? '{' (signal+=SignalReference ';')+ '}'
+		//{fmlInfra::Channel}
+		//       ( visibility=VisibilityKind
+		//         & modifier=Modifier
+		//       )?
+		//       'channel' name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       '{'
+		//           ( signal+=SignalReference ';' )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Channel}
 		public Action getChannelAction_0() { return cChannelAction_0; }
 		
-		//(visibility=VisibilityKind & modifier=Modifier)?
+		//( visibility=VisibilityKind
+		//  & modifier=Modifier
+		//)?
 		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
 		
 		//visibility=VisibilityKind
@@ -14789,7 +17775,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -14798,7 +17784,7 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
 		
-		//(signal+=SignalReference ';')+
+		//( signal+=SignalReference ';' )+
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//signal+=SignalReference
@@ -14821,14 +17807,15 @@
 		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cNameESIdentifierParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
 		
-		//SignalReference fmlInfra::Signal:
-		//	direction=ChannelDirection? name=ESIdentifier;
+		//SignalReference returns fmlInfra::Signal
+		//    : ( direction=ChannelDirection )? name=ESIdentifier
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//direction=ChannelDirection? name=ESIdentifier
+		//( direction=ChannelDirection )? name=ESIdentifier
 		public Group getGroup() { return cGroup; }
 		
-		//direction=ChannelDirection?
+		//( direction=ChannelDirection )?
 		public Assignment getDirectionAssignment_0() { return cDirectionAssignment_0; }
 		
 		//ChannelDirection
@@ -14858,21 +17845,28 @@
 		private final Keyword cSemicolonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
 		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
-		//Channelimpl fmlInfra::Channel:
-		//	{fmlInfra::Channel} modifier=Modifier?
-		//	'channel' name=ESIdentifier unrestrictedName=UnrestrictedName?
-		//	'{' (signal+=SignalReference ';')+
-		//	'}';
+		//Channelimpl returns fmlInfra::Channel
+		//    : {fmlInfra::Channel}
+		//        ( modifier=Modifier )?
+		//        'channel' name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//        '{'
+		//            ( signal+=SignalReference ';' )+
+		//        '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::Channel} modifier=Modifier? 'channel' name=ESIdentifier unrestrictedName=UnrestrictedName? '{'
-		//(signal+=SignalReference ';')+ '}'
+		//{fmlInfra::Channel}
+		//       ( modifier=Modifier )?
+		//       'channel' name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+		//       '{'
+		//           ( signal+=SignalReference ';' )+
+		//       '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::Channel}
 		public Action getChannelAction_0() { return cChannelAction_0; }
 		
-		//modifier=Modifier?
+		//( modifier=Modifier )?
 		public Assignment getModifierAssignment_1() { return cModifierAssignment_1; }
 		
 		//Modifier
@@ -14887,7 +17881,7 @@
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_3_0() { return cNameESIdentifierParserRuleCall_3_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_4() { return cUnrestrictedNameAssignment_4; }
 		
 		//UnrestrictedName
@@ -14896,7 +17890,7 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
 		
-		//(signal+=SignalReference ';')+
+		//( signal+=SignalReference ';' )+
 		public Group getGroup_6() { return cGroup_6; }
 		
 		//signal+=SignalReference
@@ -14915,8 +17909,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ChannelPublic");
 		private final RuleCall cChannelimplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ChannelPublic fmlInfra::Channel:
-		//	Channelimpl;
+		//ChannelPublic returns fmlInfra::Channel
+		//    : Channelimpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//Channelimpl
@@ -14926,8 +17921,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ChannelProtected");
 		private final RuleCall cChannelimplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ChannelProtected fmlInfra::Channel:
-		//	Channelimpl;
+		//ChannelProtected returns fmlInfra::Channel
+		//    : Channelimpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//Channelimpl
@@ -14937,8 +17933,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ChannelPrivate");
 		private final RuleCall cChannelimplParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//ChannelPrivate fmlInfra::Channel:
-		//	Channelimpl;
+		//ChannelPrivate returns fmlInfra::Channel
+		//    : Channelimpl
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//Channelimpl
@@ -15025,35 +18022,92 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Section Transition Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Transition fmlStmchn::Transition:
-		//	{fmlStmchn::Transition} transient?='transient'? 'transition'
-		//	moe=TransitionMoe?
-		//	name=ESIdentifier? unrestrictedName=UnrestrictedName? ('{' (('@trigger:' trigger+=TransitionTrigger*)?
-		//	(guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard | '@tguard:')?
-		//	'@effect:' effect=TransitionEffect?
-		//	| behavior=TransitionBehavior)?
-		//	'}' ('-->' (target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ';')?
-		//	| '-->' (target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ('{' (('@trigger:'
-		//	trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard | '@tguard:')?
-		//	'@effect:' effect=TransitionEffect?
-		//	| behavior=TransitionBehavior)?
-		//	'}' | ';'));
+		//Transition returns fmlStmchn::Transition
+		//    : {fmlStmchn::Transition} (transient?='transient')? 'transition'
+		//        ( moe=TransitionMoe )?
+		//        ( name=ESIdentifier )?  ( unrestrictedName=UnrestrictedName )?
+		////        ( ( behavior=BlockStatement '-->' target=[fmlStmchn::Vertex|ESUfid] ';' )
+		////        | ( '-->' target=[fmlStmchn::Vertex|ESUfid] (behavior=BlockStatement | ';') )
+		////        )
+		//        ( ( '{'
+		//            ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                ( guard  = TransitionGuard      | '@guard:' )?
+		//                ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                '@effect:'  ( effect = TransitionEffect  )?
+		//              )
+		//            | behavior=TransitionBehavior
+		//            )?
+		//            '}'
+		//            ( '-->'
+		//                ( target=[fmlStmchn::Vertex|ESUfid]
+		//                | targetExpression=ValuePureNamedMachineExpression
+		//                ) ';'
+		//            )?
+		//          )
+		//        | ( '-->'
+		//            ( target=[fmlStmchn::Vertex|ESUfid]
+		//            | targetExpression=ValuePureNamedMachineExpression
+		//            )
+		//            ( ( '{'
+		//                ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                    ( guard  = TransitionGuard      | '@guard:' )?
+		//                    ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                    '@effect:'  ( effect = TransitionEffect  )?
+		//                  )
+		//                | behavior=TransitionBehavior
+		//                )?
+		//                '}' )
+		//            | ';'
+		//            )
+		//          )
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmchn::Transition} transient?='transient'? 'transition' moe=TransitionMoe? name=ESIdentifier?
-		//unrestrictedName=UnrestrictedName? ('{' (('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard |
-		//'@guard:')? (tguard=TransitionTimedGuard | '@tguard:')? '@effect:' effect=TransitionEffect? |
-		//behavior=TransitionBehavior)? '}' ('-->' (target=[fmlStmchn::Vertex|ESUfid] |
-		//targetExpression=ValuePureNamedMachineExpression) ';')? | '-->' (target=[fmlStmchn::Vertex|ESUfid] |
-		//targetExpression=ValuePureNamedMachineExpression) ('{' (('@trigger:' trigger+=TransitionTrigger*)?
-		//(guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard | '@tguard:')? '@effect:' effect=TransitionEffect? |
-		//behavior=TransitionBehavior)? '}' | ';'))
+		// {fmlStmchn::Transition} (transient?='transient')? 'transition'
+		//        ( moe=TransitionMoe )?
+		//        ( name=ESIdentifier )?  ( unrestrictedName=UnrestrictedName )?
+		////        ( ( behavior=BlockStatement '-->' target=[fmlStmchn::Vertex|ESUfid] ';' )
+		////        | ( '-->' target=[fmlStmchn::Vertex|ESUfid] (behavior=BlockStatement | ';') )
+		////        )
+		//        ( ( '{'
+		//            ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                ( guard  = TransitionGuard      | '@guard:' )?
+		//                ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                '@effect:'  ( effect = TransitionEffect  )?
+		//              )
+		//            | behavior=TransitionBehavior
+		//            )?
+		//            '}'
+		//            ( '-->'
+		//                ( target=[fmlStmchn::Vertex|ESUfid]
+		//                | targetExpression=ValuePureNamedMachineExpression
+		//                ) ';'
+		//            )?
+		//          )
+		//        | ( '-->'
+		//            ( target=[fmlStmchn::Vertex|ESUfid]
+		//            | targetExpression=ValuePureNamedMachineExpression
+		//            )
+		//            ( ( '{'
+		//                ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                    ( guard  = TransitionGuard      | '@guard:' )?
+		//                    ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                    '@effect:'  ( effect = TransitionEffect  )?
+		//                  )
+		//                | behavior=TransitionBehavior
+		//                )?
+		//                '}' )
+		//            | ';'
+		//            )
+		//          )
+		//        )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmchn::Transition}
 		public Action getTransitionAction_0() { return cTransitionAction_0; }
 		
-		//transient?='transient'?
+		//(transient?='transient')?
 		public Assignment getTransientAssignment_1() { return cTransientAssignment_1; }
 		
 		//'transient'
@@ -15062,64 +18116,113 @@
 		//'transition'
 		public Keyword getTransitionKeyword_2() { return cTransitionKeyword_2; }
 		
-		//moe=TransitionMoe?
+		//( moe=TransitionMoe )?
 		public Assignment getMoeAssignment_3() { return cMoeAssignment_3; }
 		
 		//TransitionMoe
 		public RuleCall getMoeTransitionMoeParserRuleCall_3_0() { return cMoeTransitionMoeParserRuleCall_3_0; }
 		
-		//name=ESIdentifier?
+		//( name=ESIdentifier )?
 		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
 		
 		//ESIdentifier
 		public RuleCall getNameESIdentifierParserRuleCall_4_0() { return cNameESIdentifierParserRuleCall_4_0; }
 		
-		//unrestrictedName=UnrestrictedName?
+		//( unrestrictedName=UnrestrictedName )?
 		public Assignment getUnrestrictedNameAssignment_5() { return cUnrestrictedNameAssignment_5; }
 		
 		//UnrestrictedName
 		public RuleCall getUnrestrictedNameUnrestrictedNameParserRuleCall_5_0() { return cUnrestrictedNameUnrestrictedNameParserRuleCall_5_0; }
 		
-		//('{' (('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)? '}' ('-->'
-		//(target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ';')? | '-->'
-		//(target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ('{' (('@trigger:'
-		//trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard | '@tguard:')?
-		//'@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)? '}' | ';'))
+		////        ( ( behavior=BlockStatement '-->' target=[fmlStmchn::Vertex|ESUfid] ';' )
+		////        | ( '-->' target=[fmlStmchn::Vertex|ESUfid] (behavior=BlockStatement | ';') )
+		////        )
+		//        ( ( '{'
+		//            ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                ( guard  = TransitionGuard      | '@guard:' )?
+		//                ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                '@effect:'  ( effect = TransitionEffect  )?
+		//              )
+		//            | behavior=TransitionBehavior
+		//            )?
+		//            '}'
+		//            ( '-->'
+		//                ( target=[fmlStmchn::Vertex|ESUfid]
+		//                | targetExpression=ValuePureNamedMachineExpression
+		//                ) ';'
+		//            )?
+		//          )
+		//        | ( '-->'
+		//            ( target=[fmlStmchn::Vertex|ESUfid]
+		//            | targetExpression=ValuePureNamedMachineExpression
+		//            )
+		//            ( ( '{'
+		//                ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                    ( guard  = TransitionGuard      | '@guard:' )?
+		//                    ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                    '@effect:'  ( effect = TransitionEffect  )?
+		//                  )
+		//                | behavior=TransitionBehavior
+		//                )?
+		//                '}' )
+		//            | ';'
+		//            )
+		//          )
+		//        )
 		public Alternatives getAlternatives_6() { return cAlternatives_6; }
 		
-		//'{' (('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)? '}' ('-->'
-		//(target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ';')?
+		//( '{'
+		//           ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//               ( guard  = TransitionGuard      | '@guard:' )?
+		//               ( tguard = TransitionTimedGuard | '@tguard:')?
+		//               '@effect:'  ( effect = TransitionEffect  )?
+		//             )
+		//           | behavior=TransitionBehavior
+		//           )?
+		//           '}'
+		//           ( '-->'
+		//               ( target=[fmlStmchn::Vertex|ESUfid]
+		//               | targetExpression=ValuePureNamedMachineExpression
+		//               ) ';'
+		//           )?
+		//         )
 		public Group getGroup_6_0() { return cGroup_6_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6_0_0() { return cLeftCurlyBracketKeyword_6_0_0; }
 		
-		//(('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)?
+		//( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//    ( guard  = TransitionGuard      | '@guard:' )?
+		//    ( tguard = TransitionTimedGuard | '@tguard:')?
+		//    '@effect:'  ( effect = TransitionEffect  )?
+		//  )
+		//| behavior=TransitionBehavior
+		//)?
 		public Alternatives getAlternatives_6_0_1() { return cAlternatives_6_0_1; }
 		
-		//('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect?
+		//( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//               ( guard  = TransitionGuard      | '@guard:' )?
+		//               ( tguard = TransitionTimedGuard | '@tguard:')?
+		//               '@effect:'  ( effect = TransitionEffect  )?
+		//             )
 		public Group getGroup_6_0_1_0() { return cGroup_6_0_1_0; }
 		
-		//('@trigger:' trigger+=TransitionTrigger*)?
+		//( '@trigger:' ( trigger+= TransitionTrigger )* )?
 		public Group getGroup_6_0_1_0_0() { return cGroup_6_0_1_0_0; }
 		
 		//'@trigger:'
 		public Keyword getTriggerKeyword_6_0_1_0_0_0() { return cTriggerKeyword_6_0_1_0_0_0; }
 		
-		//trigger+=TransitionTrigger*
+		//( trigger+= TransitionTrigger )*
 		public Assignment getTriggerAssignment_6_0_1_0_0_1() { return cTriggerAssignment_6_0_1_0_0_1; }
 		
 		//TransitionTrigger
 		public RuleCall getTriggerTransitionTriggerParserRuleCall_6_0_1_0_0_1_0() { return cTriggerTransitionTriggerParserRuleCall_6_0_1_0_0_1_0; }
 		
-		//(guard=TransitionGuard | '@guard:')?
+		//( guard  = TransitionGuard      | '@guard:' )?
 		public Alternatives getAlternatives_6_0_1_0_1() { return cAlternatives_6_0_1_0_1; }
 		
-		//guard=TransitionGuard
+		//guard  = TransitionGuard
 		public Assignment getGuardAssignment_6_0_1_0_1_0() { return cGuardAssignment_6_0_1_0_1_0; }
 		
 		//TransitionGuard
@@ -15128,10 +18231,10 @@
 		//'@guard:'
 		public Keyword getGuardKeyword_6_0_1_0_1_1() { return cGuardKeyword_6_0_1_0_1_1; }
 		
-		//(tguard=TransitionTimedGuard | '@tguard:')?
+		//( tguard = TransitionTimedGuard | '@tguard:')?
 		public Alternatives getAlternatives_6_0_1_0_2() { return cAlternatives_6_0_1_0_2; }
 		
-		//tguard=TransitionTimedGuard
+		//tguard = TransitionTimedGuard
 		public Assignment getTguardAssignment_6_0_1_0_2_0() { return cTguardAssignment_6_0_1_0_2_0; }
 		
 		//TransitionTimedGuard
@@ -15143,7 +18246,7 @@
 		//'@effect:'
 		public Keyword getEffectKeyword_6_0_1_0_3() { return cEffectKeyword_6_0_1_0_3; }
 		
-		//effect=TransitionEffect?
+		//( effect = TransitionEffect  )?
 		public Assignment getEffectAssignment_6_0_1_0_4() { return cEffectAssignment_6_0_1_0_4; }
 		
 		//TransitionEffect
@@ -15158,13 +18261,19 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_6_0_2() { return cRightCurlyBracketKeyword_6_0_2; }
 		
-		//('-->' (target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ';')?
+		//( '-->'
+		//    ( target=[fmlStmchn::Vertex|ESUfid]
+		//    | targetExpression=ValuePureNamedMachineExpression
+		//    ) ';'
+		//)?
 		public Group getGroup_6_0_3() { return cGroup_6_0_3; }
 		
 		//'-->'
 		public Keyword getHyphenMinusHyphenMinusGreaterThanSignKeyword_6_0_3_0() { return cHyphenMinusHyphenMinusGreaterThanSignKeyword_6_0_3_0; }
 		
-		//(target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression)
+		//( target=[fmlStmchn::Vertex|ESUfid]
+		//| targetExpression=ValuePureNamedMachineExpression
+		//)
 		public Alternatives getAlternatives_6_0_3_1() { return cAlternatives_6_0_3_1; }
 		
 		//target=[fmlStmchn::Vertex|ESUfid]
@@ -15185,15 +18294,30 @@
 		//';'
 		public Keyword getSemicolonKeyword_6_0_3_2() { return cSemicolonKeyword_6_0_3_2; }
 		
-		//'-->' (target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ('{' (('@trigger:'
-		//trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard | '@tguard:')?
-		//'@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)? '}' | ';')
+		//( '-->'
+		//           ( target=[fmlStmchn::Vertex|ESUfid]
+		//           | targetExpression=ValuePureNamedMachineExpression
+		//           )
+		//           ( ( '{'
+		//               ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                   ( guard  = TransitionGuard      | '@guard:' )?
+		//                   ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                   '@effect:'  ( effect = TransitionEffect  )?
+		//                 )
+		//               | behavior=TransitionBehavior
+		//               )?
+		//               '}' )
+		//           | ';'
+		//           )
+		//         )
 		public Group getGroup_6_1() { return cGroup_6_1; }
 		
 		//'-->'
 		public Keyword getHyphenMinusHyphenMinusGreaterThanSignKeyword_6_1_0() { return cHyphenMinusHyphenMinusGreaterThanSignKeyword_6_1_0; }
 		
-		//(target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression)
+		//( target=[fmlStmchn::Vertex|ESUfid]
+		//| targetExpression=ValuePureNamedMachineExpression
+		//)
 		public Alternatives getAlternatives_6_1_1() { return cAlternatives_6_1_1; }
 		
 		//target=[fmlStmchn::Vertex|ESUfid]
@@ -15211,41 +18335,65 @@
 		//ValuePureNamedMachineExpression
 		public RuleCall getTargetExpressionValuePureNamedMachineExpressionParserRuleCall_6_1_1_1_0() { return cTargetExpressionValuePureNamedMachineExpressionParserRuleCall_6_1_1_1_0; }
 		
-		//('{' (('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)? '}' | ';')
+		//( ( '{'
+		//    ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//        ( guard  = TransitionGuard      | '@guard:' )?
+		//        ( tguard = TransitionTimedGuard | '@tguard:')?
+		//        '@effect:'  ( effect = TransitionEffect  )?
+		//      )
+		//    | behavior=TransitionBehavior
+		//    )?
+		//    '}' )
+		//| ';'
+		//)
 		public Alternatives getAlternatives_6_1_2() { return cAlternatives_6_1_2; }
 		
-		//'{' (('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)? '}'
+		//( '{'
+		//               ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                   ( guard  = TransitionGuard      | '@guard:' )?
+		//                   ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                   '@effect:'  ( effect = TransitionEffect  )?
+		//                 )
+		//               | behavior=TransitionBehavior
+		//               )?
+		//               '}' )
 		public Group getGroup_6_1_2_0() { return cGroup_6_1_2_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6_1_2_0_0() { return cLeftCurlyBracketKeyword_6_1_2_0_0; }
 		
-		//(('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect? | behavior=TransitionBehavior)?
+		//( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//    ( guard  = TransitionGuard      | '@guard:' )?
+		//    ( tguard = TransitionTimedGuard | '@tguard:')?
+		//    '@effect:'  ( effect = TransitionEffect  )?
+		//  )
+		//| behavior=TransitionBehavior
+		//)?
 		public Alternatives getAlternatives_6_1_2_0_1() { return cAlternatives_6_1_2_0_1; }
 		
-		//('@trigger:' trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard |
-		//'@tguard:')? '@effect:' effect=TransitionEffect?
+		//( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+		//                   ( guard  = TransitionGuard      | '@guard:' )?
+		//                   ( tguard = TransitionTimedGuard | '@tguard:')?
+		//                   '@effect:'  ( effect = TransitionEffect  )?
+		//                 )
 		public Group getGroup_6_1_2_0_1_0() { return cGroup_6_1_2_0_1_0; }
 		
-		//('@trigger:' trigger+=TransitionTrigger*)?
+		//( '@trigger:' ( trigger+= TransitionTrigger )* )?
 		public Group getGroup_6_1_2_0_1_0_0() { return cGroup_6_1_2_0_1_0_0; }
 		
 		//'@trigger:'
 		public Keyword getTriggerKeyword_6_1_2_0_1_0_0_0() { return cTriggerKeyword_6_1_2_0_1_0_0_0; }
 		
-		//trigger+=TransitionTrigger*
+		//( trigger+= TransitionTrigger )*
 		public Assignment getTriggerAssignment_6_1_2_0_1_0_0_1() { return cTriggerAssignment_6_1_2_0_1_0_0_1; }
 		
 		//TransitionTrigger
 		public RuleCall getTriggerTransitionTriggerParserRuleCall_6_1_2_0_1_0_0_1_0() { return cTriggerTransitionTriggerParserRuleCall_6_1_2_0_1_0_0_1_0; }
 		
-		//(guard=TransitionGuard | '@guard:')?
+		//( guard  = TransitionGuard      | '@guard:' )?
 		public Alternatives getAlternatives_6_1_2_0_1_0_1() { return cAlternatives_6_1_2_0_1_0_1; }
 		
-		//guard=TransitionGuard
+		//guard  = TransitionGuard
 		public Assignment getGuardAssignment_6_1_2_0_1_0_1_0() { return cGuardAssignment_6_1_2_0_1_0_1_0; }
 		
 		//TransitionGuard
@@ -15254,10 +18402,10 @@
 		//'@guard:'
 		public Keyword getGuardKeyword_6_1_2_0_1_0_1_1() { return cGuardKeyword_6_1_2_0_1_0_1_1; }
 		
-		//(tguard=TransitionTimedGuard | '@tguard:')?
+		//( tguard = TransitionTimedGuard | '@tguard:')?
 		public Alternatives getAlternatives_6_1_2_0_1_0_2() { return cAlternatives_6_1_2_0_1_0_2; }
 		
-		//tguard=TransitionTimedGuard
+		//tguard = TransitionTimedGuard
 		public Assignment getTguardAssignment_6_1_2_0_1_0_2_0() { return cTguardAssignment_6_1_2_0_1_0_2_0; }
 		
 		//TransitionTimedGuard
@@ -15269,7 +18417,7 @@
 		//'@effect:'
 		public Keyword getEffectKeyword_6_1_2_0_1_0_3() { return cEffectKeyword_6_1_2_0_1_0_3; }
 		
-		//effect=TransitionEffect?
+		//( effect = TransitionEffect  )?
 		public Assignment getEffectAssignment_6_1_2_0_1_0_4() { return cEffectAssignment_6_1_2_0_1_0_4; }
 		
 		//TransitionEffect
@@ -15315,34 +18463,54 @@
 		private final RuleCall cPriorityEIntParserRuleCall_1_1_1_0 = (RuleCall)cPriorityAssignment_1_1_1.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_2 = (Keyword)cGroup.eContents().get(2);
 		
-		//TransitionMoe fmlStmchn::TransitionMoe:
-		//	'<' ('moc:'? (moc=TransitionMoc ('&' isElse?='else')?
-		//	| isElse?='else') (',' 'prior:'? priority=EInt)?
-		//	| 'prior:'? priority=EInt)
-		//	'>';
+		//TransitionMoe returns fmlStmchn::TransitionMoe
+		//    : '<'
+		//        ( ('moc:')?
+		//            ( moc=TransitionMoc  ( '&' isElse?='else' )?
+		//            | isElse?='else'
+		//            ) ( ',' ( 'prior:' )? priority=EInt )?
+		//        | ( 'prior:' )? priority=EInt
+		//        )
+		//      '>'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'<' ('moc:'? (moc=TransitionMoc ('&' isElse?='else')? | isElse?='else') (',' 'prior:'? priority=EInt)? | 'prior:'?
-		//priority=EInt) '>'
+		//'<'
+		//       ( ('moc:')?
+		//           ( moc=TransitionMoc  ( '&' isElse?='else' )?
+		//           | isElse?='else'
+		//           ) ( ',' ( 'prior:' )? priority=EInt )?
+		//       | ( 'prior:' )? priority=EInt
+		//       )
+		//     '>'
 		public Group getGroup() { return cGroup; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_0() { return cLessThanSignKeyword_0; }
 		
-		//('moc:'? (moc=TransitionMoc ('&' isElse?='else')? | isElse?='else') (',' 'prior:'? priority=EInt)? | 'prior:'?
-		//priority=EInt)
+		//( ('moc:')?
+		//    ( moc=TransitionMoc  ( '&' isElse?='else' )?
+		//    | isElse?='else'
+		//    ) ( ',' ( 'prior:' )? priority=EInt )?
+		//| ( 'prior:' )? priority=EInt
+		//)
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//'moc:'? (moc=TransitionMoc ('&' isElse?='else')? | isElse?='else') (',' 'prior:'? priority=EInt)?
+		//('moc:')?
+		//           ( moc=TransitionMoc  ( '&' isElse?='else' )?
+		//           | isElse?='else'
+		//           ) ( ',' ( 'prior:' )? priority=EInt )?
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
-		//'moc:'?
+		//('moc:')?
 		public Keyword getMocKeyword_1_0_0() { return cMocKeyword_1_0_0; }
 		
-		//(moc=TransitionMoc ('&' isElse?='else')? | isElse?='else')
+		//( moc=TransitionMoc  ( '&' isElse?='else' )?
+		//| isElse?='else'
+		//)
 		public Alternatives getAlternatives_1_0_1() { return cAlternatives_1_0_1; }
 		
-		//moc=TransitionMoc ('&' isElse?='else')?
+		//moc=TransitionMoc  ( '&' isElse?='else' )?
 		public Group getGroup_1_0_1_0() { return cGroup_1_0_1_0; }
 		
 		//moc=TransitionMoc
@@ -15351,7 +18519,7 @@
 		//TransitionMoc
 		public RuleCall getMocTransitionMocEnumRuleCall_1_0_1_0_0_0() { return cMocTransitionMocEnumRuleCall_1_0_1_0_0_0; }
 		
-		//('&' isElse?='else')?
+		//( '&' isElse?='else' )?
 		public Group getGroup_1_0_1_0_1() { return cGroup_1_0_1_0_1; }
 		
 		//'&'
@@ -15369,13 +18537,13 @@
 		//'else'
 		public Keyword getIsElseElseKeyword_1_0_1_1_0() { return cIsElseElseKeyword_1_0_1_1_0; }
 		
-		//(',' 'prior:'? priority=EInt)?
+		//( ',' ( 'prior:' )? priority=EInt )?
 		public Group getGroup_1_0_2() { return cGroup_1_0_2; }
 		
 		//','
 		public Keyword getCommaKeyword_1_0_2_0() { return cCommaKeyword_1_0_2_0; }
 		
-		//'prior:'?
+		//( 'prior:' )?
 		public Keyword getPriorKeyword_1_0_2_1() { return cPriorKeyword_1_0_2_1; }
 		
 		//priority=EInt
@@ -15384,10 +18552,10 @@
 		//EInt
 		public RuleCall getPriorityEIntParserRuleCall_1_0_2_2_0() { return cPriorityEIntParserRuleCall_1_0_2_2_0; }
 		
-		//'prior:'? priority=EInt
+		//( 'prior:' )? priority=EInt
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
-		//'prior:'?
+		//( 'prior:' )?
 		public Keyword getPriorKeyword_1_1_0() { return cPriorKeyword_1_1_0; }
 		
 		//priority=EInt
@@ -15408,24 +18576,28 @@
 		private final Assignment cStatementAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cStatementStatementParserRuleCall_2_0 = (RuleCall)cStatementAssignment_2.eContents().get(0);
 		
-		//TransitionBehavior fmlStmnt::BlockStatement:
-		//	{fmlStmnt::BlockStatement} op=BlockStatementScheduler?
-		//	statement+=Statement*;
+		//TransitionBehavior returns fmlStmnt::BlockStatement
+		//    : {fmlStmnt::BlockStatement}
+		//        ( op=BlockStatementScheduler )?
+		//         ( statement+=Statement )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::BlockStatement} op=BlockStatementScheduler? statement+=Statement*
+		//{fmlStmnt::BlockStatement}
+		//       ( op=BlockStatementScheduler )?
+		//        ( statement+=Statement )*
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmnt::BlockStatement}
 		public Action getBlockStatementAction_0() { return cBlockStatementAction_0; }
 		
-		//op=BlockStatementScheduler?
+		//( op=BlockStatementScheduler )?
 		public Assignment getOpAssignment_1() { return cOpAssignment_1; }
 		
 		//BlockStatementScheduler
 		public RuleCall getOpBlockStatementSchedulerParserRuleCall_1_0() { return cOpBlockStatementSchedulerParserRuleCall_1_0; }
 		
-		//statement+=Statement*
+		//( statement+=Statement )*
 		public Assignment getStatementAssignment_2() { return cStatementAssignment_2; }
 		
 		//Statement
@@ -15435,8 +18607,9 @@
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.TransitionTrigger");
 		private final RuleCall cInputComStatementParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
-		//TransitionTrigger fmlStmnt::InputComStatement:
-		//	InputComStatement;
+		//TransitionTrigger returns fmlStmnt::InputComStatement
+		//    : InputComStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//InputComStatement
@@ -15467,20 +18640,36 @@
 		private final RuleCall cEventGuardStatementParserRuleCall_1_1_2 = (RuleCall)cAlternatives_1_1.eContents().get(2);
 		private final RuleCall cCheckSatGuardStatementParserRuleCall_1_1_3 = (RuleCall)cAlternatives_1_1.eContents().get(3);
 		
-		//TransitionGuard fmlStmnt::AbstractGuardStatement:
-		//	{fmlStmnt::GuardStatement}
-		//	'@guard<' condition=TransitionGuardExpression
-		//	| '@guard:' ({fmlStmnt::GuardStatement} ('[' condition=Expression ']'
-		//	| condition=Expression) | GuardStatement
-		//	| EventGuardStatement
-		//	| CheckSatGuardStatement);
+		//TransitionGuard returns fmlStmnt::AbstractGuardStatement
+		//    : {fmlStmnt::GuardStatement}
+		//        '@guard<' condition=TransitionGuardExpression
+		//    | '@guard:'
+		//        ( {fmlStmnt::GuardStatement}
+		//            ( '[' condition=Expression ']'
+		//            | condition=Expression
+		//            )
+		//        | GuardStatement
+		//        | EventGuardStatement
+		//        | CheckSatGuardStatement
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::GuardStatement} '@guard<' condition=TransitionGuardExpression | '@guard:' ({fmlStmnt::GuardStatement} ('['
-		//condition=Expression ']' | condition=Expression) | GuardStatement | EventGuardStatement | CheckSatGuardStatement)
+		//{fmlStmnt::GuardStatement}
+		//       '@guard<' condition=TransitionGuardExpression
+		//   | '@guard:'
+		//       ( {fmlStmnt::GuardStatement}
+		//           ( '[' condition=Expression ']'
+		//           | condition=Expression
+		//           )
+		//       | GuardStatement
+		//       | EventGuardStatement
+		//       | CheckSatGuardStatement
+		//       )
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{fmlStmnt::GuardStatement} '@guard<' condition=TransitionGuardExpression
+		//{fmlStmnt::GuardStatement}
+		//       '@guard<' condition=TransitionGuardExpression
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//{fmlStmnt::GuardStatement}
@@ -15495,24 +18684,42 @@
 		//TransitionGuardExpression
 		public RuleCall getConditionTransitionGuardExpressionParserRuleCall_0_2_0() { return cConditionTransitionGuardExpressionParserRuleCall_0_2_0; }
 		
-		//'@guard:' ({fmlStmnt::GuardStatement} ('[' condition=Expression ']' | condition=Expression) | GuardStatement |
-		//EventGuardStatement | CheckSatGuardStatement)
+		//'@guard:'
+		//       ( {fmlStmnt::GuardStatement}
+		//           ( '[' condition=Expression ']'
+		//           | condition=Expression
+		//           )
+		//       | GuardStatement
+		//       | EventGuardStatement
+		//       | CheckSatGuardStatement
+		//       )
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'@guard:'
 		public Keyword getGuardKeyword_1_0() { return cGuardKeyword_1_0; }
 		
-		//({fmlStmnt::GuardStatement} ('[' condition=Expression ']' | condition=Expression) | GuardStatement | EventGuardStatement
-		//| CheckSatGuardStatement)
+		//( {fmlStmnt::GuardStatement}
+		//    ( '[' condition=Expression ']'
+		//    | condition=Expression
+		//    )
+		//| GuardStatement
+		//| EventGuardStatement
+		//| CheckSatGuardStatement
+		//)
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
-		//{fmlStmnt::GuardStatement} ('[' condition=Expression ']' | condition=Expression)
+		//{fmlStmnt::GuardStatement}
+		//           ( '[' condition=Expression ']'
+		//           | condition=Expression
+		//           )
 		public Group getGroup_1_1_0() { return cGroup_1_1_0; }
 		
 		//{fmlStmnt::GuardStatement}
 		public Action getGuardStatementAction_1_1_0_0() { return cGuardStatementAction_1_1_0_0; }
 		
-		//('[' condition=Expression ']' | condition=Expression)
+		//( '[' condition=Expression ']'
+		//| condition=Expression
+		//)
 		public Alternatives getAlternatives_1_1_0_1() { return cAlternatives_1_1_0_1; }
 		
 		//'[' condition=Expression ']'
@@ -15559,21 +18766,25 @@
 		private final Assignment cOperandAssignment_3 = (Assignment)cGroup.eContents().get(3);
 		private final RuleCall cOperandBitwiseOrExpressionParserRuleCall_3_0 = (RuleCall)cOperandAssignment_3.eContents().get(0);
 		
-		//TransitionGuardExpression fmlExpr::Expression:
-		//	{fmlExpr::LogicalAssociativeExpression} operator=('&&' | 'and' | '||' | 'or') '>:'
-		//	operand+=BitwiseOrExpression+;
+		//TransitionGuardExpression returns fmlExpr::Expression
+		//    : {fmlExpr::LogicalAssociativeExpression}
+		//        operator=( '&&' | 'and' | '||' | 'or' ) '>:'
+		//        ( operand+=BitwiseOrExpression )+
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LogicalAssociativeExpression} operator=('&&' | 'and' | '||' | 'or') '>:' operand+=BitwiseOrExpression+
+		//{fmlExpr::LogicalAssociativeExpression}
+		//       operator=( '&&' | 'and' | '||' | 'or' ) '>:'
+		//       ( operand+=BitwiseOrExpression )+
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LogicalAssociativeExpression}
 		public Action getLogicalAssociativeExpressionAction_0() { return cLogicalAssociativeExpressionAction_0; }
 		
-		//operator=('&&' | 'and' | '||' | 'or')
+		//operator=( '&&' | 'and' | '||' | 'or' )
 		public Assignment getOperatorAssignment_1() { return cOperatorAssignment_1; }
 		
-		//('&&' | 'and' | '||' | 'or')
+		//( '&&' | 'and' | '||' | 'or' )
 		public Alternatives getOperatorAlternatives_1_0() { return cOperatorAlternatives_1_0; }
 		
 		//'&&'
@@ -15591,7 +18802,7 @@
 		//'>:'
 		public Keyword getGreaterThanSignColonKeyword_2() { return cGreaterThanSignColonKeyword_2; }
 		
-		//operand+=BitwiseOrExpression+
+		//( operand+=BitwiseOrExpression )+
 		public Assignment getOperandAssignment_3() { return cOperandAssignment_3; }
 		
 		//BitwiseOrExpression
@@ -15620,18 +18831,32 @@
 		private final RuleCall cConditionExpressionParserRuleCall_1_1_0_1_1_0 = (RuleCall)cConditionAssignment_1_1_0_1_1.eContents().get(0);
 		private final RuleCall cTimedGuardStatementParserRuleCall_1_1_1 = (RuleCall)cAlternatives_1_1.eContents().get(1);
 		
-		//TransitionTimedGuard fmlStmnt::TimedGuardStatement:
-		//	{fmlStmnt::TimedGuardStatement}
-		//	'@tguard<' condition=TransitionGuardExpression
-		//	| '@tguard:' ({fmlStmnt::TimedGuardStatement} ('{' condition=Expression '}'
-		//	| condition=Expression) | TimedGuardStatement);
+		//TransitionTimedGuard returns fmlStmnt::TimedGuardStatement
+		//    : {fmlStmnt::TimedGuardStatement}
+		//        '@tguard<' condition=TransitionGuardExpression
+		//    | '@tguard:'
+		//        ( {fmlStmnt::TimedGuardStatement}
+		//            ( '{' condition=Expression '}'
+		//            | condition=Expression
+		//            )
+		//        | TimedGuardStatement
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::TimedGuardStatement} '@tguard<' condition=TransitionGuardExpression | '@tguard:'
-		//({fmlStmnt::TimedGuardStatement} ('{' condition=Expression '}' | condition=Expression) | TimedGuardStatement)
+		//{fmlStmnt::TimedGuardStatement}
+		//       '@tguard<' condition=TransitionGuardExpression
+		//   | '@tguard:'
+		//       ( {fmlStmnt::TimedGuardStatement}
+		//           ( '{' condition=Expression '}'
+		//           | condition=Expression
+		//           )
+		//       | TimedGuardStatement
+		//       )
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{fmlStmnt::TimedGuardStatement} '@tguard<' condition=TransitionGuardExpression
+		//{fmlStmnt::TimedGuardStatement}
+		//       '@tguard<' condition=TransitionGuardExpression
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//{fmlStmnt::TimedGuardStatement}
@@ -15646,22 +18871,38 @@
 		//TransitionGuardExpression
 		public RuleCall getConditionTransitionGuardExpressionParserRuleCall_0_2_0() { return cConditionTransitionGuardExpressionParserRuleCall_0_2_0; }
 		
-		//'@tguard:' ({fmlStmnt::TimedGuardStatement} ('{' condition=Expression '}' | condition=Expression) | TimedGuardStatement)
+		//'@tguard:'
+		//       ( {fmlStmnt::TimedGuardStatement}
+		//           ( '{' condition=Expression '}'
+		//           | condition=Expression
+		//           )
+		//       | TimedGuardStatement
+		//       )
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'@tguard:'
 		public Keyword getTguardKeyword_1_0() { return cTguardKeyword_1_0; }
 		
-		//({fmlStmnt::TimedGuardStatement} ('{' condition=Expression '}' | condition=Expression) | TimedGuardStatement)
+		//( {fmlStmnt::TimedGuardStatement}
+		//    ( '{' condition=Expression '}'
+		//    | condition=Expression
+		//    )
+		//| TimedGuardStatement
+		//)
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
-		//{fmlStmnt::TimedGuardStatement} ('{' condition=Expression '}' | condition=Expression)
+		//{fmlStmnt::TimedGuardStatement}
+		//           ( '{' condition=Expression '}'
+		//           | condition=Expression
+		//           )
 		public Group getGroup_1_1_0() { return cGroup_1_1_0; }
 		
 		//{fmlStmnt::TimedGuardStatement}
 		public Action getTimedGuardStatementAction_1_1_0_0() { return cTimedGuardStatementAction_1_1_0_0; }
 		
-		//('{' condition=Expression '}' | condition=Expression)
+		//( '{' condition=Expression '}'
+		//| condition=Expression
+		//)
 		public Alternatives getAlternatives_1_1_0_1() { return cAlternatives_1_1_0_1; }
 		
 		//'{' condition=Expression '}'
@@ -15697,17 +18938,26 @@
 		private final Assignment cStatementAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
 		private final RuleCall cStatementTransitionEffectStatementParserRuleCall_1_1_0 = (RuleCall)cStatementAssignment_1_1.eContents().get(0);
 		
-		//TransitionEffect fmlStmnt::Statement:
-		//	TransitionEffectStatement ({fmlStmnt::BlockStatement.statement+=current} statement+=TransitionEffectStatement)*;
+		//TransitionEffect returns fmlStmnt::Statement
+		//    : TransitionEffectStatement
+		//        ( {fmlStmnt::BlockStatement.statement+=current}
+		//            statement+=TransitionEffectStatement
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//TransitionEffectStatement ({fmlStmnt::BlockStatement.statement+=current} statement+=TransitionEffectStatement)*
+		//TransitionEffectStatement
+		//       ( {fmlStmnt::BlockStatement.statement+=current}
+		//           statement+=TransitionEffectStatement
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
 		//TransitionEffectStatement
 		public RuleCall getTransitionEffectStatementParserRuleCall_0() { return cTransitionEffectStatementParserRuleCall_0; }
 		
-		//({fmlStmnt::BlockStatement.statement+=current} statement+=TransitionEffectStatement)*
+		//( {fmlStmnt::BlockStatement.statement+=current}
+		//    statement+=TransitionEffectStatement
+		//)*
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlStmnt::BlockStatement.statement+=current}
@@ -15733,21 +18983,30 @@
 		private final RuleCall cActivityStatementParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
 		private final RuleCall cInvokeStatementParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
 		
-		//TransitionEffectStatement fmlStmnt::Statement:
-		//	ExpressionStatement
-		//	| OutputComStatement
-		//	| IfStatement
-		//	| WhileDoStatement
-		//	| DoWhileStatement
-		//	| ForStatement
-		//	| ForEachStatement
-		//	| InterruptStatement
-		//	| ActivityStatement
-		//	| InvokeStatement;
+		//TransitionEffectStatement returns fmlStmnt::Statement
+		//    : ExpressionStatement
+		//    | OutputComStatement
+		//    | IfStatement
+		//    | WhileDoStatement
+		//    | DoWhileStatement
+		//    | ForStatement
+		//    | ForEachStatement
+		//    | InterruptStatement
+		//    | ActivityStatement
+		//    | InvokeStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//ExpressionStatement | OutputComStatement | IfStatement | WhileDoStatement | DoWhileStatement | ForStatement |
-		//ForEachStatement | InterruptStatement | ActivityStatement | InvokeStatement
+		//ExpressionStatement
+		//   | OutputComStatement
+		//   | IfStatement
+		//   | WhileDoStatement
+		//   | DoWhileStatement
+		//   | ForStatement
+		//   | ForEachStatement
+		//   | InterruptStatement
+		//   | ActivityStatement
+		//   | InvokeStatement
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//ExpressionStatement
@@ -15804,32 +19063,46 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Statement Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Statement fmlStmnt::Statement:
-		//	BlockStatement
-		//	| ExpressionStatement
-		//	| GuardStatement
-		//	| TimedGuardStatement
-		//	| EventGuardStatement
-		//	| CheckSatGuardStatement
-		//	| InputComStatement
-		//	| OutputComStatement
-		//	| IfStatement
-		//	| WhileDoStatement
-		//	| DoWhileStatement
-		//	| ForStatement
-		//	| ForEachStatement
-		//	| InterruptStatement
-		//	| ActivityStatement
-		//	| InvokeStatement
-		//	//	| ObserverStatement
-		//
-		//	| MetaStatement;
+		//Statement returns fmlStmnt::Statement
+		//     : BlockStatement
+		//     | ExpressionStatement
+		//    | GuardStatement
+		//    | TimedGuardStatement
+		//    | EventGuardStatement
+		//    | CheckSatGuardStatement
+		//    | InputComStatement
+		//    | OutputComStatement
+		//    | IfStatement
+		//    | WhileDoStatement
+		//    | DoWhileStatement
+		//    | ForStatement
+		//    | ForEachStatement
+		//    | InterruptStatement
+		//    | ActivityStatement
+		//    | InvokeStatement
+		////    | ObserverStatement
+		//    | MetaStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//BlockStatement | ExpressionStatement | GuardStatement | TimedGuardStatement | EventGuardStatement |
-		//CheckSatGuardStatement | InputComStatement | OutputComStatement | IfStatement | WhileDoStatement | DoWhileStatement |
-		//ForStatement | ForEachStatement | InterruptStatement | ActivityStatement | InvokeStatement //	| ObserverStatement
-		//| MetaStatement
+		// BlockStatement
+		//     | ExpressionStatement
+		//    | GuardStatement
+		//    | TimedGuardStatement
+		//    | EventGuardStatement
+		//    | CheckSatGuardStatement
+		//    | InputComStatement
+		//    | OutputComStatement
+		//    | IfStatement
+		//    | WhileDoStatement
+		//    | DoWhileStatement
+		//    | ForStatement
+		//    | ForEachStatement
+		//    | InterruptStatement
+		//    | ActivityStatement
+		//    | InvokeStatement
+		////    | ObserverStatement
+		//    | MetaStatement
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//BlockStatement
@@ -15894,15 +19167,20 @@
 		private final RuleCall cStatementStatementParserRuleCall_3_0 = (RuleCall)cStatementAssignment_3.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//BlockStatement fmlStmnt::BlockStatement:
-		//	{fmlStmnt::BlockStatement}
-		//	'{'
-		//	op=BlockStatementScheduler?
-		//	statement+=Statement*
-		//	'}';
+		//BlockStatement returns fmlStmnt::BlockStatement
+		//    : {fmlStmnt::BlockStatement}
+		//        '{'
+		//            ( op=BlockStatementScheduler )?
+		//             ( statement+=Statement )*
+		//         '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::BlockStatement} '{' op=BlockStatementScheduler? statement+=Statement* '}'
+		//{fmlStmnt::BlockStatement}
+		//       '{'
+		//           ( op=BlockStatementScheduler )?
+		//            ( statement+=Statement )*
+		//        '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmnt::BlockStatement}
@@ -15911,13 +19189,13 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
 		
-		//op=BlockStatementScheduler?
+		//( op=BlockStatementScheduler )?
 		public Assignment getOpAssignment_2() { return cOpAssignment_2; }
 		
 		//BlockStatementScheduler
 		public RuleCall getOpBlockStatementSchedulerParserRuleCall_2_0() { return cOpBlockStatementSchedulerParserRuleCall_2_0; }
 		
-		//statement+=Statement*
+		//( statement+=Statement )*
 		public Assignment getStatementAssignment_3() { return cStatementAssignment_3; }
 		
 		//Statement
@@ -15952,22 +19230,30 @@
 		private final Keyword cForkKeyword_20 = (Keyword)cAlternatives.eContents().get(20);
 		private final Keyword cJoinKeyword_21 = (Keyword)cAlternatives.eContents().get(21);
 		
-		//BlockStatementScheduler:
-		//	'|;|' | '|§|' | '|;;|' | '|.|' | '|/;|'
-		//	| '|i|' | '|interleaving|'
-		//	| '|~|' | '|partial-order|'
-		//	| '|,|' | '|parallel|'
-		//	| '|a|' | '|async|'
-		//	| '|partial-order|'
-		//	| '|and|' | '|or|'
-		//	| '|and#then|' | '|or#else|'
-		//	| '|indet|' | '|/\\|'
-		//	| '|fork|' | '|join|';
+		//BlockStatementScheduler
+		//    : '|;|' | '|§|' | '|;;|' | '|.|' | '|/;|'
+		//    | '|i|' | '|interleaving|'
+		//    | '|~|' | '|partial-order|'
+		//    | '|,|' | '|parallel|'
+		//    | '|a|' | '|async|'
+		//    | '|partial-order|'
+		//    | '|and|' | '|or|'
+		//    | '|and#then|' | '|or#else|'
+		//    | '|indet|' | '|/\\|'
+		//    | '|fork|' | '|join|'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'|;|' | '|§|' | '|;;|' | '|.|' | '|/;|' | '|i|' | '|interleaving|' | '|~|' | '|partial-order|' | '|,|' | '|parallel|' |
-		//'|a|' | '|async|' | '|partial-order|' | '|and|' | '|or|' | '|and#then|' | '|or#else|' | '|indet|' | '|/\\|' | '|fork|'
-		//| '|join|'
+		//'|;|' | '|§|' | '|;;|' | '|.|' | '|/;|'
+		//   | '|i|' | '|interleaving|'
+		//   | '|~|' | '|partial-order|'
+		//   | '|,|' | '|parallel|'
+		//   | '|a|' | '|async|'
+		//   | '|partial-order|'
+		//   | '|and|' | '|or|'
+		//   | '|and#then|' | '|or#else|'
+		//   | '|indet|' | '|/\\|'
+		//   | '|fork|' | '|join|'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'|;|'
@@ -16063,19 +19349,20 @@
 		//// ++lv --lv
 		//// lv++  lv--
 		///////////////////////////////////////////
-		//ExpressionStatement fmlStmnt::ExpressionStatement:
-		//	expression=AssignmentExpression ';'
-		//	| expression=NewfreshExpression ';'
-		//	| expression=IncrementOrDecrementPrefixExpression ';'
-		//	| expression=IncrementOrDecrementPostfixExpression ';'
-		//	//	| expression=DynamicInstantiationExpression ';'
-		//
-		//	//	| expression=InvokeExpression ';'
-		//;
+		//ExpressionStatement returns fmlStmnt::ExpressionStatement
+		//    : expression=AssignmentExpression ';'
+		//    | expression=NewfreshExpression ';'
+		//    | expression=IncrementOrDecrementPrefixExpression  ';'
+		//    | expression=IncrementOrDecrementPostfixExpression ';'
+		////    | expression=DynamicInstantiationExpression ';'
+		////    | expression=InvokeExpression ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//expression=AssignmentExpression ';' | expression=NewfreshExpression ';' |
-		//expression=IncrementOrDecrementPrefixExpression ';' | expression=IncrementOrDecrementPostfixExpression ';'
+		//expression=AssignmentExpression ';'
+		//   | expression=NewfreshExpression ';'
+		//   | expression=IncrementOrDecrementPrefixExpression  ';'
+		//   | expression=IncrementOrDecrementPostfixExpression ';'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//expression=AssignmentExpression ';'
@@ -16102,7 +19389,7 @@
 		//';'
 		public Keyword getSemicolonKeyword_1_1() { return cSemicolonKeyword_1_1; }
 		
-		//expression=IncrementOrDecrementPrefixExpression ';'
+		//expression=IncrementOrDecrementPrefixExpression  ';'
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//expression=IncrementOrDecrementPrefixExpression
@@ -16137,8 +19424,9 @@
 		/////////////////////////////////////////////
 		////// Guard Rules
 		/////////////////////////////////////////////
-		//GuardStatement fmlStmnt::GuardStatement:
-		//	'guard' condition=Expression ';';
+		//GuardStatement returns fmlStmnt::GuardStatement
+		//    : 'guard' condition=Expression ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'guard' condition=Expression ';'
@@ -16164,8 +19452,9 @@
 		private final RuleCall cConditionExpressionParserRuleCall_1_0 = (RuleCall)cConditionAssignment_1.eContents().get(0);
 		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
 		
-		//TimedGuardStatement fmlStmnt::TimedGuardStatement:
-		//	'tguard' condition=Expression ';';
+		//TimedGuardStatement returns fmlStmnt::TimedGuardStatement
+		//    : 'tguard' condition=Expression ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'tguard' condition=Expression ';'
@@ -16191,8 +19480,9 @@
 		private final RuleCall cConditionExpressionParserRuleCall_1_0 = (RuleCall)cConditionAssignment_1.eContents().get(0);
 		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
 		
-		//EventGuardStatement fmlStmnt::EventGuardStatement:
-		//	'event' condition=Expression ';';
+		//EventGuardStatement returns fmlStmnt::EventGuardStatement
+		//    : 'event' condition=Expression ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'event' condition=Expression ';'
@@ -16222,8 +19512,9 @@
 		private final RuleCall cConditionExpressionParserRuleCall_4_0 = (RuleCall)cConditionAssignment_4.eContents().get(0);
 		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
-		//CheckSatGuardStatement fmlStmnt::CheckSatGuardStatement:
-		//	'checksat' '<' solver=ESIdentifier '>' condition=Expression ';';
+		//CheckSatGuardStatement returns fmlStmnt::CheckSatGuardStatement
+		//    : 'checksat' '<' solver=ESIdentifier '>' condition=Expression ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'checksat' '<' solver=ESIdentifier '>' condition=Expression ';'
@@ -16286,14 +19577,22 @@
 		////
 		////// Communication Rules
 		/////////////////////////////////////////////
-		//InputComStatement fmlStmnt::InputComStatement:
-		//	'input' port=LitteralComElement ('(' leftValue+=Expression (',' leftValue+=Expression)* ')')? (('<--'
-		//	target=LiteralPureReferenceExpression)?
-		//	& (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+		//InputComStatement returns fmlStmnt::InputComStatement
+		//    : 'input' port=LitteralComElement //ExpressionAsPort
+		//        ( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
+		////        ( ( '<--' target=ValuePureNamedMachineExpression )?
+		//        ( ( '<--' target=LiteralPureReferenceExpression )?
+		//        & ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        ) ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'input' port=LitteralComElement ('(' leftValue+=Expression (',' leftValue+=Expression)* ')')? (('<--'
-		//target=LiteralPureReferenceExpression)? & (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';'
+		// 'input' port=LitteralComElement //ExpressionAsPort
+		//        ( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
+		////        ( ( '<--' target=ValuePureNamedMachineExpression )?
+		//        ( ( '<--' target=LiteralPureReferenceExpression )?
+		//        & ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        ) ';'
 		public Group getGroup() { return cGroup; }
 		
 		//'input'
@@ -16305,7 +19604,8 @@
 		//LitteralComElement
 		public RuleCall getPortLitteralComElementParserRuleCall_1_0() { return cPortLitteralComElementParserRuleCall_1_0; }
 		
-		//('(' leftValue+=Expression (',' leftValue+=Expression)* ')')?
+		////ExpressionAsPort
+		//       ( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'('
@@ -16317,13 +19617,13 @@
 		//Expression
 		public RuleCall getLeftValueExpressionParserRuleCall_2_1_0() { return cLeftValueExpressionParserRuleCall_2_1_0; }
 		
-		//(',' leftValue+=Expression)*
+		//( ',' leftValue+= Expression )*
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//','
 		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
 		
-		//leftValue+=Expression
+		//leftValue+= Expression
 		public Assignment getLeftValueAssignment_2_2_1() { return cLeftValueAssignment_2_2_1; }
 		
 		//Expression
@@ -16332,10 +19632,13 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
 		
-		//(('<--' target=LiteralPureReferenceExpression)? & (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?)
+		////        ( ( '<--' target=ValuePureNamedMachineExpression )?
+		//        ( ( '<--' target=LiteralPureReferenceExpression )?
+		//        & ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        )
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
 		
-		//('<--' target=LiteralPureReferenceExpression)?
+		//( '<--' target=LiteralPureReferenceExpression )?
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'<--'
@@ -16347,10 +19650,10 @@
 		//LiteralPureReferenceExpression
 		public RuleCall getTargetLiteralPureReferenceExpressionParserRuleCall_3_0_1_0() { return cTargetLiteralPureReferenceExpressionParserRuleCall_3_0_1_0; }
 		
-		//(('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?
+		//( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
-		//('<==' | 'via')
+		//( '<==' | 'via' )
 		public Alternatives getAlternatives_3_1_0() { return cAlternatives_3_1_0; }
 		
 		//'<=='
@@ -16400,14 +19703,22 @@
 		private final RuleCall cRouteChannelESUfidParserRuleCall_3_1_1_0_1 = (RuleCall)cRouteChannelCrossReference_3_1_1_0.eContents().get(1);
 		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//OutputComStatement fmlStmnt::OutputComStatement:
-		//	'output' port=LitteralComElement ('(' rightValue+=Expression (',' rightValue+=Expression)* ')')? (('-->'
-		//	target=LiteralPureReferenceExpression)?
-		//	& (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+		//OutputComStatement returns fmlStmnt::OutputComStatement
+		//    : 'output' port=LitteralComElement //port=ExpressionAsPort
+		//        ( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
+		////        ( ( '-->' target=ValuePureNamedMachineExpression )?
+		//        ( ( '-->' target=LiteralPureReferenceExpression )?
+		//        & ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        ) ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'output' port=LitteralComElement ('(' rightValue+=Expression (',' rightValue+=Expression)* ')')? (('-->'
-		//target=LiteralPureReferenceExpression)? & (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';'
+		// 'output' port=LitteralComElement //port=ExpressionAsPort
+		//        ( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
+		////        ( ( '-->' target=ValuePureNamedMachineExpression )?
+		//        ( ( '-->' target=LiteralPureReferenceExpression )?
+		//        & ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        ) ';'
 		public Group getGroup() { return cGroup; }
 		
 		//'output'
@@ -16419,7 +19730,8 @@
 		//LitteralComElement
 		public RuleCall getPortLitteralComElementParserRuleCall_1_0() { return cPortLitteralComElementParserRuleCall_1_0; }
 		
-		//('(' rightValue+=Expression (',' rightValue+=Expression)* ')')?
+		////port=ExpressionAsPort
+		//       ( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'('
@@ -16431,7 +19743,7 @@
 		//Expression
 		public RuleCall getRightValueExpressionParserRuleCall_2_1_0() { return cRightValueExpressionParserRuleCall_2_1_0; }
 		
-		//(',' rightValue+=Expression)*
+		//( ',' rightValue+=Expression )*
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//','
@@ -16446,10 +19758,13 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
 		
-		//(('-->' target=LiteralPureReferenceExpression)? & (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?)
+		////        ( ( '-->' target=ValuePureNamedMachineExpression )?
+		//        ( ( '-->' target=LiteralPureReferenceExpression )?
+		//        & ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        )
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
 		
-		//('-->' target=LiteralPureReferenceExpression)?
+		//( '-->' target=LiteralPureReferenceExpression )?
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'-->'
@@ -16461,10 +19776,10 @@
 		//LiteralPureReferenceExpression
 		public RuleCall getTargetLiteralPureReferenceExpressionParserRuleCall_3_0_1_0() { return cTargetLiteralPureReferenceExpressionParserRuleCall_3_0_1_0; }
 		
-		//(('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?
+		//( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
-		//('==>' | 'via')
+		//( '==>' | 'via' )
 		public Alternatives getAlternatives_3_1_0() { return cAlternatives_3_1_0; }
 		
 		//'==>'
@@ -16491,8 +19806,12 @@
 		private final CrossReference cElementNamedElementCrossReference_0 = (CrossReference)cElementAssignment.eContents().get(0);
 		private final RuleCall cElementNamedElementESIdentifierParserRuleCall_0_1 = (RuleCall)cElementNamedElementCrossReference_0.eContents().get(1);
 		
-		//LitteralComElement fmlExpr::LiteralReferenceElement:
-		//	element=[fmlCommon::NamedElement|ESIdentifier];
+		//LitteralComElement returns fmlExpr::LiteralReferenceElement
+		//    : element=[fmlCommon::NamedElement|ESIdentifier]
+		////    | element=[fmlInfra::Port|ESIdentifier]
+		////    | element=[fmlInfra::Signal|ESIdentifier]
+		////    | element=[fmlInfra::Message|ESIdentifier]
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//element=[fmlCommon::NamedElement|ESIdentifier]
@@ -16522,13 +19841,18 @@
 		/////////////////////////////////////////////
 		////// If - Conditional Rules
 		/////////////////////////////////////////////
-		//IfStatement fmlStmnt::IfStatement:
-		//	'if' condition=Expression
-		//	bodyBlock=BlockStatement
-		//	elseifStatement+=ElseIfStatement* ('else' elseBlock=BlockStatement)?;
+		//IfStatement returns fmlStmnt::IfStatement
+		//    : 'if' condition=Expression
+		//        bodyBlock=BlockStatement
+		//        ( elseifStatement+=ElseIfStatement )*
+		//        ( 'else' elseBlock=BlockStatement )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'if' condition=Expression bodyBlock=BlockStatement elseifStatement+=ElseIfStatement* ('else' elseBlock=BlockStatement)?
+		//'if' condition=Expression
+		//       bodyBlock=BlockStatement
+		//       ( elseifStatement+=ElseIfStatement )*
+		//       ( 'else' elseBlock=BlockStatement )?
 		public Group getGroup() { return cGroup; }
 		
 		//'if'
@@ -16546,13 +19870,13 @@
 		//BlockStatement
 		public RuleCall getBodyBlockBlockStatementParserRuleCall_2_0() { return cBodyBlockBlockStatementParserRuleCall_2_0; }
 		
-		//elseifStatement+=ElseIfStatement*
+		//( elseifStatement+=ElseIfStatement )*
 		public Assignment getElseifStatementAssignment_3() { return cElseifStatementAssignment_3; }
 		
 		//ElseIfStatement
 		public RuleCall getElseifStatementElseIfStatementParserRuleCall_3_0() { return cElseifStatementElseIfStatementParserRuleCall_3_0; }
 		
-		//('else' elseBlock=BlockStatement)?
+		//( 'else' elseBlock=BlockStatement )?
 		public Group getGroup_4() { return cGroup_4; }
 		
 		//'else'
@@ -16577,15 +19901,17 @@
 		private final Assignment cBodyBlockAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cBodyBlockBlockStatementParserRuleCall_2_0 = (RuleCall)cBodyBlockAssignment_2.eContents().get(0);
 		
-		//ElseIfStatement fmlStmnt::ConditionalBlockStatement:
-		//	('elseif' | 'else' 'if') condition=Expression
-		//	bodyBlock=BlockStatement;
+		//ElseIfStatement returns fmlStmnt::ConditionalBlockStatement
+		//    : ( 'elseif' | 'else' 'if' ) condition=Expression
+		//        bodyBlock=BlockStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//('elseif' | 'else' 'if') condition=Expression bodyBlock=BlockStatement
+		//( 'elseif' | 'else' 'if' ) condition=Expression
+		//       bodyBlock=BlockStatement
 		public Group getGroup() { return cGroup; }
 		
-		//('elseif' | 'else' 'if')
+		//( 'elseif' | 'else' 'if' )
 		public Alternatives getAlternatives_0() { return cAlternatives_0; }
 		
 		//'elseif'
@@ -16624,11 +19950,12 @@
 		///////////////////////////////////////////
 		//// Loop - Iteration Rules
 		///////////////////////////////////////////
-		//WhileDoStatement fmlStmnt::WhileDoStatement:
-		//	'while' condition=Expression bodyBlock=BlockStatement;
+		//WhileDoStatement returns fmlStmnt::WhileDoStatement
+		//    : 'while' condition=Expression  bodyBlock=BlockStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'while' condition=Expression bodyBlock=BlockStatement
+		//'while' condition=Expression  bodyBlock=BlockStatement
 		public Group getGroup() { return cGroup; }
 		
 		//'while'
@@ -16657,11 +19984,12 @@
 		private final RuleCall cConditionExpressionParserRuleCall_3_0 = (RuleCall)cConditionAssignment_3.eContents().get(0);
 		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//DoWhileStatement fmlStmnt::DoWhileStatement:
-		//	'do' bodyBlock=BlockStatement 'while' condition=Expression ';';
+		//DoWhileStatement returns fmlStmnt::DoWhileStatement
+		//    : 'do' bodyBlock=BlockStatement  'while' condition=Expression ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'do' bodyBlock=BlockStatement 'while' condition=Expression ';'
+		//'do' bodyBlock=BlockStatement  'while' condition=Expression ';'
 		public Group getGroup() { return cGroup; }
 		
 		//'do'
@@ -16715,28 +20043,33 @@
 		private final Assignment cBodyBlockAssignment_1_8 = (Assignment)cGroup_1.eContents().get(8);
 		private final RuleCall cBodyBlockBlockStatementParserRuleCall_1_8_0 = (RuleCall)cBodyBlockAssignment_1_8.eContents().get(0);
 		
-		//ForStatement fmlStmnt::ForStatement:
-		//	'for' init=ForAssignmentExpression? ';'
-		//	condition=Expression ';' iterate=ForAssignmentExpression?
-		//	bodyBlock=BlockStatement
-		//	| 'for' '(' init=ForAssignmentExpression? ';'
-		//	condition=Expression ';' iterate=ForAssignmentExpression? ')'
-		//	bodyBlock=BlockStatement;
+		//ForStatement returns fmlStmnt::ForStatement
+		//    : 'for' ( init=ForAssignmentExpression ) ? ';'
+		//        condition=Expression ';' ( iterate=ForAssignmentExpression )?
+		//        bodyBlock=BlockStatement
+		//    | 'for' '(' ( init=ForAssignmentExpression ) ? ';'
+		//        condition=Expression ';' ( iterate=ForAssignmentExpression )? ')'
+		//        bodyBlock=BlockStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'for' init=ForAssignmentExpression? ';' condition=Expression ';' iterate=ForAssignmentExpression?
-		//bodyBlock=BlockStatement | 'for' '(' init=ForAssignmentExpression? ';' condition=Expression ';'
-		//iterate=ForAssignmentExpression? ')' bodyBlock=BlockStatement
+		//'for' ( init=ForAssignmentExpression ) ? ';'
+		//       condition=Expression ';' ( iterate=ForAssignmentExpression )?
+		//       bodyBlock=BlockStatement
+		//   | 'for' '(' ( init=ForAssignmentExpression ) ? ';'
+		//       condition=Expression ';' ( iterate=ForAssignmentExpression )? ')'
+		//       bodyBlock=BlockStatement
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//'for' init=ForAssignmentExpression? ';' condition=Expression ';' iterate=ForAssignmentExpression?
-		//bodyBlock=BlockStatement
+		//'for' ( init=ForAssignmentExpression ) ? ';'
+		//       condition=Expression ';' ( iterate=ForAssignmentExpression )?
+		//       bodyBlock=BlockStatement
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//'for'
 		public Keyword getForKeyword_0_0() { return cForKeyword_0_0; }
 		
-		//init=ForAssignmentExpression?
+		//( init=ForAssignmentExpression ) ?
 		public Assignment getInitAssignment_0_1() { return cInitAssignment_0_1; }
 		
 		//ForAssignmentExpression
@@ -16754,7 +20087,7 @@
 		//';'
 		public Keyword getSemicolonKeyword_0_4() { return cSemicolonKeyword_0_4; }
 		
-		//iterate=ForAssignmentExpression?
+		//( iterate=ForAssignmentExpression )?
 		public Assignment getIterateAssignment_0_5() { return cIterateAssignment_0_5; }
 		
 		//ForAssignmentExpression
@@ -16766,8 +20099,9 @@
 		//BlockStatement
 		public RuleCall getBodyBlockBlockStatementParserRuleCall_0_6_0() { return cBodyBlockBlockStatementParserRuleCall_0_6_0; }
 		
-		//'for' '(' init=ForAssignmentExpression? ';' condition=Expression ';' iterate=ForAssignmentExpression? ')'
-		//bodyBlock=BlockStatement
+		//'for' '(' ( init=ForAssignmentExpression ) ? ';'
+		//       condition=Expression ';' ( iterate=ForAssignmentExpression )? ')'
+		//       bodyBlock=BlockStatement
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'for'
@@ -16776,7 +20110,7 @@
 		//'('
 		public Keyword getLeftParenthesisKeyword_1_1() { return cLeftParenthesisKeyword_1_1; }
 		
-		//init=ForAssignmentExpression?
+		//( init=ForAssignmentExpression ) ?
 		public Assignment getInitAssignment_1_2() { return cInitAssignment_1_2; }
 		
 		//ForAssignmentExpression
@@ -16794,7 +20128,7 @@
 		//';'
 		public Keyword getSemicolonKeyword_1_5() { return cSemicolonKeyword_1_5; }
 		
-		//iterate=ForAssignmentExpression?
+		//( iterate=ForAssignmentExpression )?
 		public Assignment getIterateAssignment_1_6() { return cIterateAssignment_1_6; }
 		
 		//ForAssignmentExpression
@@ -16816,13 +20150,16 @@
 		private final RuleCall cIncrementOrDecrementPrefixExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cIncrementOrDecrementPostfixExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		
-		//ForAssignmentExpression fmlExpr::Expression:
-		//	AssignmentExpression
-		//	| IncrementOrDecrementPrefixExpression
-		//	| IncrementOrDecrementPostfixExpression;
+		//ForAssignmentExpression returns fmlExpr::Expression
+		//    : AssignmentExpression
+		//    | IncrementOrDecrementPrefixExpression
+		//    | IncrementOrDecrementPostfixExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//AssignmentExpression | IncrementOrDecrementPrefixExpression | IncrementOrDecrementPostfixExpression
+		//AssignmentExpression
+		//   | IncrementOrDecrementPrefixExpression
+		//   | IncrementOrDecrementPostfixExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//AssignmentExpression
@@ -16858,18 +20195,22 @@
 		private final Assignment cBodyBlockAssignment_1_6 = (Assignment)cGroup_1.eContents().get(6);
 		private final RuleCall cBodyBlockBlockStatementParserRuleCall_1_6_0 = (RuleCall)cBodyBlockAssignment_1_6.eContents().get(0);
 		
-		//ForEachStatement fmlStmnt::ForEachStatement:
-		//	'for' iterator=LeftHandSideExpression ':' enumeration=Expression
-		//	bodyBlock=BlockStatement
-		//	| 'for' '(' iterator=LeftHandSideExpression ':' enumeration=Expression ')'
-		//	bodyBlock=BlockStatement;
+		//ForEachStatement returns fmlStmnt::ForEachStatement
+		//    : 'for' iterator=LeftHandSideExpression ':' enumeration=Expression
+		//        bodyBlock=BlockStatement
+		//    | 'for' '(' iterator=LeftHandSideExpression ':' enumeration=Expression ')'
+		//        bodyBlock=BlockStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'for' iterator=LeftHandSideExpression ':' enumeration=Expression bodyBlock=BlockStatement | 'for' '('
-		//iterator=LeftHandSideExpression ':' enumeration=Expression ')' bodyBlock=BlockStatement
+		//'for' iterator=LeftHandSideExpression ':' enumeration=Expression
+		//       bodyBlock=BlockStatement
+		//   | 'for' '(' iterator=LeftHandSideExpression ':' enumeration=Expression ')'
+		//       bodyBlock=BlockStatement
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//'for' iterator=LeftHandSideExpression ':' enumeration=Expression bodyBlock=BlockStatement
+		//'for' iterator=LeftHandSideExpression ':' enumeration=Expression
+		//       bodyBlock=BlockStatement
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//'for'
@@ -16896,7 +20237,8 @@
 		//BlockStatement
 		public RuleCall getBodyBlockBlockStatementParserRuleCall_0_4_0() { return cBodyBlockBlockStatementParserRuleCall_0_4_0; }
 		
-		//'for' '(' iterator=LeftHandSideExpression ':' enumeration=Expression ')' bodyBlock=BlockStatement
+		//'for' '(' iterator=LeftHandSideExpression ':' enumeration=Expression ')'
+		//       bodyBlock=BlockStatement
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'for'
@@ -16951,12 +20293,18 @@
 		///////////////////////////////////////////
 		//// Interrupt Rules
 		///////////////////////////////////////////
-		//InterruptStatement fmlStmnt::InterruptStatement:
-		//	kind=InterruptStatementKind (expr+=Expression
-		//	| '(' expr+=Expression (',' expr+=Expression)* ')')? ';';
+		//InterruptStatement returns fmlStmnt::InterruptStatement
+		//    : kind=InterruptStatementKind
+		//        ( expr+=Expression
+		//        | '(' expr+=Expression ( ',' expr+=Expression )* ')'
+		//        )? ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//kind=InterruptStatementKind (expr+=Expression | '(' expr+=Expression (',' expr+=Expression)* ')')? ';'
+		//kind=InterruptStatementKind
+		//       ( expr+=Expression
+		//       | '(' expr+=Expression ( ',' expr+=Expression )* ')'
+		//       )? ';'
 		public Group getGroup() { return cGroup; }
 		
 		//kind=InterruptStatementKind
@@ -16965,7 +20313,9 @@
 		//InterruptStatementKind
 		public RuleCall getKindInterruptStatementKindEnumRuleCall_0_0() { return cKindInterruptStatementKindEnumRuleCall_0_0; }
 		
-		//(expr+=Expression | '(' expr+=Expression (',' expr+=Expression)* ')')?
+		//( expr+=Expression
+		//| '(' expr+=Expression ( ',' expr+=Expression )* ')'
+		//)?
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//expr+=Expression
@@ -16974,7 +20324,7 @@
 		//Expression
 		public RuleCall getExprExpressionParserRuleCall_1_0_0() { return cExprExpressionParserRuleCall_1_0_0; }
 		
-		//'(' expr+=Expression (',' expr+=Expression)* ')'
+		//'(' expr+=Expression ( ',' expr+=Expression )* ')'
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//'('
@@ -16986,7 +20336,7 @@
 		//Expression
 		public RuleCall getExprExpressionParserRuleCall_1_1_1_0() { return cExprExpressionParserRuleCall_1_1_1_0; }
 		
-		//(',' expr+=Expression)*
+		//( ',' expr+=Expression )*
 		public Group getGroup_1_1_2() { return cGroup_1_1_2; }
 		
 		//','
@@ -17031,17 +20381,28 @@
 		/////////////////////////////////////////////
 		////// Activity Rules
 		/////////////////////////////////////////////
-		//ActivityStatement fmlStmnt::ActivityStatement:
-		//	{fmlStmnt::ActivityStatement} op=OPERATOR_ACTIVITY (machine=ValuePureNamedMachineExpression
-		//	(tuple=TupleParameterExpression? ';'
-		//	//			| '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
-		//
-		//	| '{' (slot+=SlotProperty ';')* '}') | ';')?;
+		//ActivityStatement returns fmlStmnt::ActivityStatement
+		//    : {fmlStmnt::ActivityStatement}
+		//        op=OPERATOR_ACTIVITY
+		//        ( machine=ValuePureNamedMachineExpression
+		//            ( ( tuple=TupleParameterExpression )? ';'
+		////            | '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
+		//            | '{' ( slot+=SlotProperty ';' )*  '}'
+		//            )
+		//        | ';'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::ActivityStatement} op=OPERATOR_ACTIVITY (machine=ValuePureNamedMachineExpression
-		//(tuple=TupleParameterExpression? ';' //			| '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
-		//| '{' (slot+=SlotProperty ';')* '}') | ';')?
+		// {fmlStmnt::ActivityStatement}
+		//        op=OPERATOR_ACTIVITY
+		//        ( machine=ValuePureNamedMachineExpression
+		//            ( ( tuple=TupleParameterExpression )? ';'
+		////            | '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
+		//            | '{' ( slot+=SlotProperty ';' )*  '}'
+		//            )
+		//        | ';'
+		//        )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmnt::ActivityStatement}
@@ -17053,12 +20414,20 @@
 		//OPERATOR_ACTIVITY
 		public RuleCall getOpOPERATOR_ACTIVITYEnumRuleCall_1_0() { return cOpOPERATOR_ACTIVITYEnumRuleCall_1_0; }
 		
-		//(machine=ValuePureNamedMachineExpression (tuple=TupleParameterExpression? ';' //			| '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
-		//| '{' (slot+=SlotProperty ';')* '}') | ';')?
+		//        ( machine=ValuePureNamedMachineExpression
+		//            ( ( tuple=TupleParameterExpression )? ';'
+		////            | '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
+		//            | '{' ( slot+=SlotProperty ';' )*  '}'
+		//            )
+		//        | ';'
+		//        )?
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//machine=ValuePureNamedMachineExpression (tuple=TupleParameterExpression? ';' //			| '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
-		//| '{' (slot+=SlotProperty ';')* '}')
+		// machine=ValuePureNamedMachineExpression
+		//            ( ( tuple=TupleParameterExpression )? ';'
+		////            | '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
+		//            | '{' ( slot+=SlotProperty ';' )*  '}'
+		//            )
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//machine=ValuePureNamedMachineExpression
@@ -17067,14 +20436,16 @@
 		//ValuePureNamedMachineExpression
 		public RuleCall getMachineValuePureNamedMachineExpressionParserRuleCall_2_0_0_0() { return cMachineValuePureNamedMachineExpressionParserRuleCall_2_0_0_0; }
 		
-		//(tuple=TupleParameterExpression? ';' //			| '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
-		//| '{' (slot+=SlotProperty ';')* '}')
+		//            ( ( tuple=TupleParameterExpression )? ';'
+		////            | '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
+		//            | '{' ( slot+=SlotProperty ';' )*  '}'
+		//            )
 		public Alternatives getAlternatives_2_0_1() { return cAlternatives_2_0_1; }
 		
-		//tuple=TupleParameterExpression? ';'
+		//( tuple=TupleParameterExpression )? ';'
 		public Group getGroup_2_0_1_0() { return cGroup_2_0_1_0; }
 		
-		//tuple=TupleParameterExpression?
+		//( tuple=TupleParameterExpression )?
 		public Assignment getTupleAssignment_2_0_1_0_0() { return cTupleAssignment_2_0_1_0_0; }
 		
 		//TupleParameterExpression
@@ -17083,13 +20454,13 @@
 		//';'
 		public Keyword getSemicolonKeyword_2_0_1_0_1() { return cSemicolonKeyword_2_0_1_0_1; }
 		
-		//'{' (slot+=SlotProperty ';')* '}'
+		//'{' ( slot+=SlotProperty ';' )*  '}'
 		public Group getGroup_2_0_1_1() { return cGroup_2_0_1_1; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2_0_1_1_0() { return cLeftCurlyBracketKeyword_2_0_1_1_0; }
 		
-		//(slot+=SlotProperty ';')*
+		//( slot+=SlotProperty ';' )*
 		public Group getGroup_2_0_1_1_1() { return cGroup_2_0_1_1_1; }
 		
 		//slot+=SlotProperty
@@ -17214,32 +20585,66 @@
 		private final Keyword cRightParenthesisKeyword_3_3_1_1_3 = (Keyword)cGroup_3_3_1_1.eContents().get(3);
 		private final Keyword cSemicolonKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
 		
-		//InvokeStatement fmlStmnt::InvokeStatement:
-		//	expression=InvokeExpressionDeprecated ';'
-		//	// Exec Routine
-		//	| invokable=[fmlCommon::NamedElement|ESUfid] execRoutine?='(' args=MixTupleExpressionList? ')' ('-->'
-		//	(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
-		//	| '(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'))? ';'
-		//	// Exec Routine
-		//	| execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid]
-		//	'(' args=MixTupleExpressionList? ')' ('-->' (rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
-		//	| '(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'))? ';'
-		//	// Call Procedure
-		//	| callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid] args=MixTupleExpressionList? ('-->'
-		//	(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
-		//	| '(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'))? ';';
+		//InvokeStatement returns fmlStmnt::InvokeStatement
+		//    : expression=InvokeExpressionDeprecated ';'
+		//    // Exec Routine
+		//    |  invokable=[fmlCommon::NamedElement|ESUfid]
+		//        execRoutine?='(' ( args=MixTupleExpressionList )? ')'
+		//        ( '-->'
+		//            ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//            | '(' rets+=[fmlInfra::Variable]
+		//                ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//            )
+		//        )? ';'
+		//    // Exec Routine
+		//    | execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid]
+		//        '(' ( args=MixTupleExpressionList )? ')'
+		//        ( '-->'
+		//            ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//            | '(' rets+=[fmlInfra::Variable]
+		//                ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//            )
+		//        )? ';'
+		//    // Call Procedure
+		//    | callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid]
+		//        ( args=MixTupleExpressionList )?
+		//        ( '-->'
+		//            ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//            | '(' rets+=[fmlInfra::Variable]
+		//                ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//            )
+		//        )? ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//expression=InvokeExpressionDeprecated ';' // Exec Routine
-		//| invokable=[fmlCommon::NamedElement|ESUfid] execRoutine?='(' args=MixTupleExpressionList? ')' ('-->'
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))? ';' // Exec Routine
-		//| execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid] '(' args=MixTupleExpressionList? ')' ('-->'
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))? ';' // Call Procedure
-		//| callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid] args=MixTupleExpressionList? ('-->'
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))? ';'
+		//expression=InvokeExpressionDeprecated ';'
+		//   // Exec Routine
+		//   |  invokable=[fmlCommon::NamedElement|ESUfid]
+		//       execRoutine?='(' ( args=MixTupleExpressionList )? ')'
+		//       ( '-->'
+		//           ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//           | '(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//           )
+		//       )? ';'
+		//   // Exec Routine
+		//   | execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid]
+		//       '(' ( args=MixTupleExpressionList )? ')'
+		//       ( '-->'
+		//           ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//           | '(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//           )
+		//       )? ';'
+		//   // Call Procedure
+		//   | callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid]
+		//       ( args=MixTupleExpressionList )?
+		//       ( '-->'
+		//           ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//           | '(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//           )
+		//       )? ';'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//expression=InvokeExpressionDeprecated ';'
@@ -17254,9 +20659,14 @@
 		//';'
 		public Keyword getSemicolonKeyword_0_1() { return cSemicolonKeyword_0_1; }
 		
-		//invokable=[fmlCommon::NamedElement|ESUfid] execRoutine?='(' args=MixTupleExpressionList? ')' ('-->'
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))? ';'
+		//invokable=[fmlCommon::NamedElement|ESUfid]
+		//      execRoutine?='(' ( args=MixTupleExpressionList )? ')'
+		//      ( '-->'
+		//          ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//          | '(' rets+=[fmlInfra::Variable]
+		//              ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//          )
+		//      )? ';'
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//invokable=[fmlCommon::NamedElement|ESUfid]
@@ -17274,7 +20684,7 @@
 		//'('
 		public Keyword getExecRoutineLeftParenthesisKeyword_1_1_0() { return cExecRoutineLeftParenthesisKeyword_1_1_0; }
 		
-		//args=MixTupleExpressionList?
+		//( args=MixTupleExpressionList )?
 		public Assignment getArgsAssignment_1_2() { return cArgsAssignment_1_2; }
 		
 		//MixTupleExpressionList
@@ -17283,18 +20693,24 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_1_3() { return cRightParenthesisKeyword_1_3; }
 		
-		//('-->' (rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))?
+		//( '-->'
+		//    ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//    | '(' rets+=[fmlInfra::Variable]
+		//        ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//    )
+		//)?
 		public Group getGroup_1_4() { return cGroup_1_4; }
 		
 		//'-->'
 		public Keyword getHyphenMinusHyphenMinusGreaterThanSignKeyword_1_4_0() { return cHyphenMinusHyphenMinusGreaterThanSignKeyword_1_4_0; }
 		
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')')
+		//( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//| '(' rets+=[fmlInfra::Variable]
+		//    ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//)
 		public Alternatives getAlternatives_1_4_1() { return cAlternatives_1_4_1; }
 		
-		//rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
+		//rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_1_4_1_0() { return cGroup_1_4_1_0; }
 		
 		//rets+=[fmlInfra::Variable]
@@ -17306,7 +20722,7 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_1_4_1_0_0_0_1() { return cRetsVariableIDTerminalRuleCall_1_4_1_0_0_0_1; }
 		
-		//(',' rets+=[fmlInfra::Variable])*
+		//( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_1_4_1_0_1() { return cGroup_1_4_1_0_1; }
 		
 		//','
@@ -17321,7 +20737,8 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_1_4_1_0_1_1_0_1() { return cRetsVariableIDTerminalRuleCall_1_4_1_0_1_1_0_1; }
 		
-		//'(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'
+		//'(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
 		public Group getGroup_1_4_1_1() { return cGroup_1_4_1_1; }
 		
 		//'('
@@ -17336,7 +20753,7 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_1_4_1_1_1_0_1() { return cRetsVariableIDTerminalRuleCall_1_4_1_1_1_0_1; }
 		
-		//(',' rets+=[fmlInfra::Variable])*
+		//( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_1_4_1_1_2() { return cGroup_1_4_1_1_2; }
 		
 		//','
@@ -17357,9 +20774,14 @@
 		//';'
 		public Keyword getSemicolonKeyword_1_5() { return cSemicolonKeyword_1_5; }
 		
-		//execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid] '(' args=MixTupleExpressionList? ')' ('-->'
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))? ';'
+		//execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid]
+		//       '(' ( args=MixTupleExpressionList )? ')'
+		//       ( '-->'
+		//           ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//           | '(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//           )
+		//       )? ';'
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//execRoutine?='exec'
@@ -17380,7 +20802,7 @@
 		//'('
 		public Keyword getLeftParenthesisKeyword_2_2() { return cLeftParenthesisKeyword_2_2; }
 		
-		//args=MixTupleExpressionList?
+		//( args=MixTupleExpressionList )?
 		public Assignment getArgsAssignment_2_3() { return cArgsAssignment_2_3; }
 		
 		//MixTupleExpressionList
@@ -17389,18 +20811,24 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_2_4() { return cRightParenthesisKeyword_2_4; }
 		
-		//('-->' (rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))?
+		//( '-->'
+		//    ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//    | '(' rets+=[fmlInfra::Variable]
+		//        ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//    )
+		//)?
 		public Group getGroup_2_5() { return cGroup_2_5; }
 		
 		//'-->'
 		public Keyword getHyphenMinusHyphenMinusGreaterThanSignKeyword_2_5_0() { return cHyphenMinusHyphenMinusGreaterThanSignKeyword_2_5_0; }
 		
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')')
+		//( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//| '(' rets+=[fmlInfra::Variable]
+		//    ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//)
 		public Alternatives getAlternatives_2_5_1() { return cAlternatives_2_5_1; }
 		
-		//rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
+		//rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_2_5_1_0() { return cGroup_2_5_1_0; }
 		
 		//rets+=[fmlInfra::Variable]
@@ -17412,7 +20840,7 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_2_5_1_0_0_0_1() { return cRetsVariableIDTerminalRuleCall_2_5_1_0_0_0_1; }
 		
-		//(',' rets+=[fmlInfra::Variable])*
+		//( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_2_5_1_0_1() { return cGroup_2_5_1_0_1; }
 		
 		//','
@@ -17427,7 +20855,8 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_2_5_1_0_1_1_0_1() { return cRetsVariableIDTerminalRuleCall_2_5_1_0_1_1_0_1; }
 		
-		//'(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'
+		//'(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
 		public Group getGroup_2_5_1_1() { return cGroup_2_5_1_1; }
 		
 		//'('
@@ -17442,7 +20871,7 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_2_5_1_1_1_0_1() { return cRetsVariableIDTerminalRuleCall_2_5_1_1_1_0_1; }
 		
-		//(',' rets+=[fmlInfra::Variable])*
+		//( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_2_5_1_1_2() { return cGroup_2_5_1_1_2; }
 		
 		//','
@@ -17463,9 +20892,14 @@
 		//';'
 		public Keyword getSemicolonKeyword_2_6() { return cSemicolonKeyword_2_6; }
 		
-		//callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid] args=MixTupleExpressionList? ('-->'
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))? ';'
+		//callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid]
+		//       ( args=MixTupleExpressionList )?
+		//       ( '-->'
+		//           ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//           | '(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//           )
+		//       )? ';'
 		public Group getGroup_3() { return cGroup_3; }
 		
 		//callProcedure?='call'
@@ -17483,24 +20917,30 @@
 		//ESUfid
 		public RuleCall getInvokableNamedElementESUfidParserRuleCall_3_1_0_1() { return cInvokableNamedElementESUfidParserRuleCall_3_1_0_1; }
 		
-		//args=MixTupleExpressionList?
+		//( args=MixTupleExpressionList )?
 		public Assignment getArgsAssignment_3_2() { return cArgsAssignment_3_2; }
 		
 		//MixTupleExpressionList
 		public RuleCall getArgsMixTupleExpressionListParserRuleCall_3_2_0() { return cArgsMixTupleExpressionListParserRuleCall_3_2_0; }
 		
-		//('-->' (rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')'))?
+		//( '-->'
+		//    ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//    | '(' rets+=[fmlInfra::Variable]
+		//        ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//    )
+		//)?
 		public Group getGroup_3_3() { return cGroup_3_3; }
 		
 		//'-->'
 		public Keyword getHyphenMinusHyphenMinusGreaterThanSignKeyword_3_3_0() { return cHyphenMinusHyphenMinusGreaterThanSignKeyword_3_3_0; }
 		
-		//(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* | '(' rets+=[fmlInfra::Variable] (','
-		//rets+=[fmlInfra::Variable])* ')')
+		//( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+		//| '(' rets+=[fmlInfra::Variable]
+		//    ( ',' rets+=[fmlInfra::Variable] )* ')'
+		//)
 		public Alternatives getAlternatives_3_3_1() { return cAlternatives_3_3_1; }
 		
-		//rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
+		//rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_3_3_1_0() { return cGroup_3_3_1_0; }
 		
 		//rets+=[fmlInfra::Variable]
@@ -17512,7 +20952,7 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_3_3_1_0_0_0_1() { return cRetsVariableIDTerminalRuleCall_3_3_1_0_0_0_1; }
 		
-		//(',' rets+=[fmlInfra::Variable])*
+		//( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_3_3_1_0_1() { return cGroup_3_3_1_0_1; }
 		
 		//','
@@ -17527,7 +20967,8 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_3_3_1_0_1_1_0_1() { return cRetsVariableIDTerminalRuleCall_3_3_1_0_1_1_0_1; }
 		
-		//'(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'
+		//'(' rets+=[fmlInfra::Variable]
+		//               ( ',' rets+=[fmlInfra::Variable] )* ')'
 		public Group getGroup_3_3_1_1() { return cGroup_3_3_1_1; }
 		
 		//'('
@@ -17542,7 +20983,7 @@
 		//ID
 		public RuleCall getRetsVariableIDTerminalRuleCall_3_3_1_1_1_0_1() { return cRetsVariableIDTerminalRuleCall_3_3_1_1_1_0_1; }
 		
-		//(',' rets+=[fmlInfra::Variable])*
+		//( ',' rets+=[fmlInfra::Variable] )*
 		public Group getGroup_3_3_1_1_2() { return cGroup_3_3_1_1_2; }
 		
 		//','
@@ -17596,23 +21037,40 @@
 		/////////////////////////////////////////////
 		////// ObsStatement Rules
 		/////////////////////////////////////////////
-		//ObserverStatement fmlStmnt::ObserverStatement:
-		//	{fmlStmnt::ObserverStatement} ('@observe' | '@obs') ('(' 'ctx:' context=ValuePureNamedMachineExpression ')')?
-		//	'{'
-		//	statement=ObservableStatement
-		//	'}' (('provided:' postCondition=Expression
-		//	| '[' postCondition=Expression ']')
-		//	';')?;
+		//ObserverStatement returns fmlStmnt::ObserverStatement
+		//    : {fmlStmnt::ObserverStatement}
+		//        ( '@observe' | '@obs' )
+		//        ( '('  'ctx:'  context=ValuePureNamedMachineExpression  ')'  )?
+		//          '{'
+		//               statement=ObservableStatement
+		//          '}'
+		//        (
+		//        ( 'provided:' postCondition=Expression
+		//         | '[' postCondition=Expression ']'
+		//         )
+		//        ';'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::ObserverStatement} ('@observe' | '@obs') ('(' 'ctx:' context=ValuePureNamedMachineExpression ')')? '{'
-		//statement=ObservableStatement '}' (('provided:' postCondition=Expression | '[' postCondition=Expression ']') ';')?
+		//{fmlStmnt::ObserverStatement}
+		//       ( '@observe' | '@obs' )
+		//       ( '('  'ctx:'  context=ValuePureNamedMachineExpression  ')'  )?
+		//         '{'
+		//              statement=ObservableStatement
+		//         '}'
+		//       (
+		//       ( 'provided:' postCondition=Expression
+		//        | '[' postCondition=Expression ']'
+		//        )
+		//       ';'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmnt::ObserverStatement}
 		public Action getObserverStatementAction_0() { return cObserverStatementAction_0; }
 		
-		//('@observe' | '@obs')
+		//( '@observe' | '@obs' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'@observe'
@@ -17621,7 +21079,7 @@
 		//'@obs'
 		public Keyword getObsKeyword_1_1() { return cObsKeyword_1_1; }
 		
-		//('(' 'ctx:' context=ValuePureNamedMachineExpression ')')?
+		//( '('  'ctx:'  context=ValuePureNamedMachineExpression  ')'  )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'('
@@ -17651,10 +21109,17 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
 		
-		//(('provided:' postCondition=Expression | '[' postCondition=Expression ']') ';')?
+		//(
+		//( 'provided:' postCondition=Expression
+		// | '[' postCondition=Expression ']'
+		// )
+		//';'
+		//)?
 		public Group getGroup_6() { return cGroup_6; }
 		
-		//('provided:' postCondition=Expression | '[' postCondition=Expression ']')
+		//( 'provided:' postCondition=Expression
+		// | '[' postCondition=Expression ']'
+		// )
 		public Alternatives getAlternatives_6_0() { return cAlternatives_6_0; }
 		
 		//'provided:' postCondition=Expression
@@ -17693,12 +21158,14 @@
 		private final RuleCall cObsInputComStatementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cObsOutputComStatementParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//ObservableStatement fmlStmnt::Statement:
-		//	ObsInputComStatement
-		//	| ObsOutputComStatement;
+		//ObservableStatement returns fmlStmnt::Statement
+		//    : ObsInputComStatement
+		//    | ObsOutputComStatement
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//ObsInputComStatement | ObsOutputComStatement
+		//ObsInputComStatement
+		//   | ObsOutputComStatement
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//ObsInputComStatement
@@ -17736,14 +21203,20 @@
 		private final RuleCall cRouteChannelESUfidParserRuleCall_3_1_1_0_1 = (RuleCall)cRouteChannelCrossReference_3_1_1_0.eContents().get(1);
 		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//ObsInputComStatement fmlStmnt::InputComStatement:
-		//	'input' port=ObsComElement ('(' leftValue+=Expression (',' leftValue+=Expression)* ')')? (('<--'
-		//	target=ValuePureNamedMachineExpression)?
-		//	& (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+		//ObsInputComStatement returns fmlStmnt::InputComStatement
+		//    : 'input' port=ObsComElement
+		//        ( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
+		//        ( ( '<--' target=ValuePureNamedMachineExpression )?
+		//        & ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        ) ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'input' port=ObsComElement ('(' leftValue+=Expression (',' leftValue+=Expression)* ')')? (('<--'
-		//target=ValuePureNamedMachineExpression)? & (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';'
+		//'input' port=ObsComElement
+		//       ( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
+		//       ( ( '<--' target=ValuePureNamedMachineExpression )?
+		//       & ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//       ) ';'
 		public Group getGroup() { return cGroup; }
 		
 		//'input'
@@ -17755,7 +21228,7 @@
 		//ObsComElement
 		public RuleCall getPortObsComElementParserRuleCall_1_0() { return cPortObsComElementParserRuleCall_1_0; }
 		
-		//('(' leftValue+=Expression (',' leftValue+=Expression)* ')')?
+		//( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'('
@@ -17767,13 +21240,13 @@
 		//Expression
 		public RuleCall getLeftValueExpressionParserRuleCall_2_1_0() { return cLeftValueExpressionParserRuleCall_2_1_0; }
 		
-		//(',' leftValue+=Expression)*
+		//( ',' leftValue+= Expression )*
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//','
 		public Keyword getCommaKeyword_2_2_0() { return cCommaKeyword_2_2_0; }
 		
-		//leftValue+=Expression
+		//leftValue+= Expression
 		public Assignment getLeftValueAssignment_2_2_1() { return cLeftValueAssignment_2_2_1; }
 		
 		//Expression
@@ -17782,10 +21255,12 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
 		
-		//(('<--' target=ValuePureNamedMachineExpression)? & (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?)
+		//( ( '<--' target=ValuePureNamedMachineExpression )?
+		//& ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//)
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
 		
-		//('<--' target=ValuePureNamedMachineExpression)?
+		//( '<--' target=ValuePureNamedMachineExpression )?
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'<--'
@@ -17797,10 +21272,10 @@
 		//ValuePureNamedMachineExpression
 		public RuleCall getTargetValuePureNamedMachineExpressionParserRuleCall_3_0_1_0() { return cTargetValuePureNamedMachineExpressionParserRuleCall_3_0_1_0; }
 		
-		//(('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?
+		//( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
-		//('<==' | 'via')
+		//( '<==' | 'via' )
 		public Alternatives getAlternatives_3_1_0() { return cAlternatives_3_1_0; }
 		
 		//'<=='
@@ -17850,14 +21325,20 @@
 		private final RuleCall cRouteChannelESUfidParserRuleCall_3_1_1_0_1 = (RuleCall)cRouteChannelCrossReference_3_1_1_0.eContents().get(1);
 		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
-		//ObsOutputComStatement fmlStmnt::OutputComStatement:
-		//	'output' port=ObsComElement ('(' rightValue+=Expression (',' rightValue+=Expression)* ')')? (('-->'
-		//	target=ValuePureNamedMachineExpression)?
-		//	& (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+		//ObsOutputComStatement returns fmlStmnt::OutputComStatement
+		//    : 'output' port=ObsComElement
+		//        ( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
+		//        ( ( '-->' target=ValuePureNamedMachineExpression )?
+		//        & ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//        ) ';'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'output' port=ObsComElement ('(' rightValue+=Expression (',' rightValue+=Expression)* ')')? (('-->'
-		//target=ValuePureNamedMachineExpression)? & (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';'
+		//'output' port=ObsComElement
+		//       ( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
+		//       ( ( '-->' target=ValuePureNamedMachineExpression )?
+		//       & ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//       ) ';'
 		public Group getGroup() { return cGroup; }
 		
 		//'output'
@@ -17869,7 +21350,7 @@
 		//ObsComElement
 		public RuleCall getPortObsComElementParserRuleCall_1_0() { return cPortObsComElementParserRuleCall_1_0; }
 		
-		//('(' rightValue+=Expression (',' rightValue+=Expression)* ')')?
+		//( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'('
@@ -17881,7 +21362,7 @@
 		//Expression
 		public RuleCall getRightValueExpressionParserRuleCall_2_1_0() { return cRightValueExpressionParserRuleCall_2_1_0; }
 		
-		//(',' rightValue+=Expression)*
+		//( ',' rightValue+=Expression )*
 		public Group getGroup_2_2() { return cGroup_2_2; }
 		
 		//','
@@ -17896,10 +21377,12 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
 		
-		//(('-->' target=ValuePureNamedMachineExpression)? & (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?)
+		//( ( '-->' target=ValuePureNamedMachineExpression )?
+		//& ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+		//)
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
 		
-		//('-->' target=ValuePureNamedMachineExpression)?
+		//( '-->' target=ValuePureNamedMachineExpression )?
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//'-->'
@@ -17911,10 +21394,10 @@
 		//ValuePureNamedMachineExpression
 		public RuleCall getTargetValuePureNamedMachineExpressionParserRuleCall_3_0_1_0() { return cTargetValuePureNamedMachineExpressionParserRuleCall_3_0_1_0; }
 		
-		//(('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?
+		//( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
-		//('==>' | 'via')
+		//( '==>' | 'via' )
 		public Alternatives getAlternatives_3_1_0() { return cAlternatives_3_1_0; }
 		
 		//'==>'
@@ -17944,25 +21427,29 @@
 		private final CrossReference cElementNamedElementCrossReference_1_0 = (CrossReference)cElementAssignment_1.eContents().get(0);
 		private final RuleCall cElementNamedElementESIdentifierParserRuleCall_1_0_1 = (RuleCall)cElementNamedElementCrossReference_1_0.eContents().get(1);
 		
-		//ObsComElement fmlExpr::ValueElementSpecification:
-		//	parent=LiteralPureReferenceExpression
-		//	//	: ( parent=ValuePureNamedInstanceExpression
-		//	//		// ( '.' | '->' ) element
-		//	//		kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
-		//?
-		//	element=[fmlCommon::NamedElement|ESIdentifier];
+		//ObsComElement returns fmlExpr::ValueElementSpecification
+		//    : ( parent=LiteralPureReferenceExpression
+		////    : ( parent=ValuePureNamedInstanceExpression
+		////        // ( '.' | '->' ) element
+		////        kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//      )?
+		//      element=[fmlCommon::NamedElement|ESIdentifier]
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//parent=LiteralPureReferenceExpression //	: ( parent=ValuePureNamedInstanceExpression
-		////		// ( '.' | '->' ) element
-		////		kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
-		//? element=[fmlCommon::NamedElement|ESIdentifier]
+		// ( parent=LiteralPureReferenceExpression
+		////    : ( parent=ValuePureNamedInstanceExpression
+		////        // ( '.' | '->' ) element
+		////        kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//      )?
+		//      element=[fmlCommon::NamedElement|ESIdentifier]
 		public Group getGroup() { return cGroup; }
 		
-		//parent=LiteralPureReferenceExpression //	: ( parent=ValuePureNamedInstanceExpression
-		////		// ( '.' | '->' ) element
-		////		kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
-		//?
+		// ( parent=LiteralPureReferenceExpression
+		////    : ( parent=ValuePureNamedInstanceExpression
+		////        // ( '.' | '->' ) element
+		////        kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//      )?
 		public Assignment getParentAssignment_0() { return cParentAssignment_0; }
 		
 		//LiteralPureReferenceExpression
@@ -17998,27 +21485,40 @@
 		private final Keyword cSemicolonKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
 		
 		////ValuePureNamedInstanceExpression returns fmlExpr::Expression
-		////	: LiteralPureReferenceExpression
+		////    : LiteralPureReferenceExpression
 		////
-		////		// ( '.' | '->' ) element
-		////		( { fmlExpr::ValueElementSpecification.parent=current }
-		//////			kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
-		////			kind=ValueDotFieldExpressionKind
-		////			element=[fmlCommon::NamedElement|ESIdentifier]
-		////		)*
-		////	;
+		////        // ( '.' | '->' ) element
+		////        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//////            kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		////            kind=ValueDotFieldExpressionKind
+		////            element=[fmlCommon::NamedElement|ESIdentifier]
+		////        )*
+		////    ;
 		/////////////////////////////////////////////
 		////// MetaStatement Rules
 		/////////////////////////////////////////////
-		//MetaStatement fmlStmnt::MetaStatement:
-		//	{fmlStmnt::MetaStatement} op=OPERATOR_META ('{' (operand+=Statement+
-		//	| operand+=Expression+)
-		//	'}'
-		//	| operand+=Expression+ ';');
+		//MetaStatement returns fmlStmnt::MetaStatement
+		//    : {fmlStmnt::MetaStatement}
+		//        op=OPERATOR_META
+		//        ( '{'
+		//            ( ( operand+=Statement  )+
+		//            | ( operand+=Expression )+
+		//            )
+		//            '}'
+		//        | ( operand+=Expression )+  ';'
+		//          )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlStmnt::MetaStatement} op=OPERATOR_META ('{' (operand+=Statement+ | operand+=Expression+) '}' | operand+=Expression+
-		//';')
+		//{fmlStmnt::MetaStatement}
+		//       op=OPERATOR_META
+		//       ( '{'
+		//           ( ( operand+=Statement  )+
+		//           | ( operand+=Expression )+
+		//           )
+		//           '}'
+		//       | ( operand+=Expression )+  ';'
+		//         )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlStmnt::MetaStatement}
@@ -18030,25 +21530,37 @@
 		//OPERATOR_META
 		public RuleCall getOpOPERATOR_METAEnumRuleCall_1_0() { return cOpOPERATOR_METAEnumRuleCall_1_0; }
 		
-		//('{' (operand+=Statement+ | operand+=Expression+) '}' | operand+=Expression+ ';')
+		//( '{'
+		//    ( ( operand+=Statement  )+
+		//    | ( operand+=Expression )+
+		//    )
+		//    '}'
+		//| ( operand+=Expression )+  ';'
+		//  )
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
 		
-		//'{' (operand+=Statement+ | operand+=Expression+) '}'
+		//'{'
+		//           ( ( operand+=Statement  )+
+		//           | ( operand+=Expression )+
+		//           )
+		//           '}'
 		public Group getGroup_2_0() { return cGroup_2_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2_0_0() { return cLeftCurlyBracketKeyword_2_0_0; }
 		
-		//(operand+=Statement+ | operand+=Expression+)
+		//( ( operand+=Statement  )+
+		//| ( operand+=Expression )+
+		//)
 		public Alternatives getAlternatives_2_0_1() { return cAlternatives_2_0_1; }
 		
-		//operand+=Statement+
+		//( operand+=Statement  )+
 		public Assignment getOperandAssignment_2_0_1_0() { return cOperandAssignment_2_0_1_0; }
 		
 		//Statement
 		public RuleCall getOperandStatementParserRuleCall_2_0_1_0_0() { return cOperandStatementParserRuleCall_2_0_1_0_0; }
 		
-		//operand+=Expression+
+		//( operand+=Expression )+
 		public Assignment getOperandAssignment_2_0_1_1() { return cOperandAssignment_2_0_1_1; }
 		
 		//Expression
@@ -18057,10 +21569,10 @@
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_2_0_2() { return cRightCurlyBracketKeyword_2_0_2; }
 		
-		//operand+=Expression+ ';'
+		//( operand+=Expression )+  ';'
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
-		//operand+=Expression+
+		//( operand+=Expression )+
 		public Assignment getOperandAssignment_2_1_0() { return cOperandAssignment_2_1_0; }
 		
 		//Expression
@@ -18078,12 +21590,14 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//Expression fmlExpr::Expression:
-		//	AssignmentExpression
-		//	| ConditionalTestExpression;
+		//Expression returns fmlExpr::Expression
+		//    : AssignmentExpression
+		//    | ConditionalTestExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//AssignmentExpression | ConditionalTestExpression
+		//AssignmentExpression
+		//   | ConditionalTestExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//AssignmentExpression
@@ -18103,12 +21617,14 @@
 		private final RuleCall cRightHandSideExpressionParserRuleCall_2_0 = (RuleCall)cRightHandSideAssignment_2.eContents().get(0);
 		
 		//// Assignment Expression
-		//AssignmentExpression fmlExpr::AssignmentExpression:
-		//	leftHandSide=LeftHandSideExpression
-		//	operator=AssignmentOperator rightHandSide=Expression;
+		//AssignmentExpression returns fmlExpr::AssignmentExpression
+		//    : leftHandSide=LeftHandSideExpression
+		//        operator=AssignmentOperator rightHandSide=Expression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//leftHandSide=LeftHandSideExpression operator=AssignmentOperator rightHandSide=Expression
+		//leftHandSide=LeftHandSideExpression
+		//       operator=AssignmentOperator rightHandSide=Expression
 		public Group getGroup() { return cGroup; }
 		
 		//leftHandSide=LeftHandSideExpression
@@ -18153,22 +21669,32 @@
 		private final Keyword cCircumflexAccentEqualsSignGreaterThanSignKeyword_18 = (Keyword)cAlternatives.eContents().get(18);
 		private final Keyword cGreaterThanSignEqualsSignGreaterThanSignKeyword_19 = (Keyword)cAlternatives.eContents().get(19);
 		
-		//AssignmentOperator:
-		//	'=' | ':=' | '::='
-		//	| '+=' | '-='
-		//	| '*=' | '/=' | '%='
-		//	| '&&=' | '||='
-		//	| '&=' | '|=' | '^='
-		//	| '<<=' | '>>=' | '>>>='
-		//	// queue operation: push, assign_top, top, pop
-		//	| '<=<'
-		//	| '^=<'
-		//	| '^=>'
-		//	| '>=>';
+		//AssignmentOperator
+		//    : '='   | ':='  | '::='
+		//    | '+='  | '-='
+		//    | '*='  | '/='  | '%='
+		//    | '&&=' | '||='
+		//    | '&='  | '|='    | '^='
+		//    | '<<=' | '>>=' | '>>>='
+		//// queue operation: push, assign_top, top, pop
+		//    | '<=<'
+		//    | '^=<'
+		//    | '^=>'
+		//    | '>=>'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'=' | ':=' | '::=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&&=' | '||=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '>>>=' // queue operation: push, assign_top, top, pop
-		//| '<=<' | '^=<' | '^=>' | '>=>'
+		// '='   | ':='  | '::='
+		//    | '+='  | '-='
+		//    | '*='  | '/='  | '%='
+		//    | '&&=' | '||='
+		//    | '&='  | '|='    | '^='
+		//    | '<<=' | '>>=' | '>>>='
+		//// queue operation: push, assign_top, top, pop
+		//    | '<=<'
+		//    | '^=<'
+		//    | '^=>'
+		//    | '>=>'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'='
@@ -18244,18 +21770,29 @@
 		private final RuleCall cLvalueValueSelectionExpressionParserRuleCall_1_1_1_0 = (RuleCall)cLvalueAssignment_1_1_1.eContents().get(0);
 		private final Keyword cRightParenthesisKeyword_1_1_2 = (Keyword)cGroup_1_1.eContents().get(2);
 		
-		//LeftHandSideExpression fmlExpr::LeftHandSideExpression:
-		//	{fmlExpr::LeftHandSideExpression} (lvalue=ValueSelectionExpression
-		//	| '(' lvalue=ValueSelectionExpression ')');
+		//LeftHandSideExpression returns fmlExpr::LeftHandSideExpression
+		//    : { fmlExpr::LeftHandSideExpression }
+		////        lvalue=PrimaryExpression
+		//        ( lvalue=ValueSelectionExpression
+		//        | '(' lvalue=ValueSelectionExpression ')'
+		//        )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LeftHandSideExpression} (lvalue=ValueSelectionExpression | '(' lvalue=ValueSelectionExpression ')')
+		// { fmlExpr::LeftHandSideExpression }
+		////        lvalue=PrimaryExpression
+		//        ( lvalue=ValueSelectionExpression
+		//        | '(' lvalue=ValueSelectionExpression ')'
+		//        )
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlExpr::LeftHandSideExpression}
+		//{ fmlExpr::LeftHandSideExpression }
 		public Action getLeftHandSideExpressionAction_0() { return cLeftHandSideExpressionAction_0; }
 		
-		//(lvalue=ValueSelectionExpression | '(' lvalue=ValueSelectionExpression ')')
+		////        lvalue=PrimaryExpression
+		//        ( lvalue=ValueSelectionExpression
+		//        | '(' lvalue=ValueSelectionExpression ')'
+		//        )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//lvalue=ValueSelectionExpression
@@ -18295,21 +21832,29 @@
 		private final RuleCall cElseOperandExpressionParserRuleCall_1_4_0 = (RuleCall)cElseOperandAssignment_1_4.eContents().get(0);
 		
 		//// Conditional Test Expression
-		//ConditionalTestExpression fmlExpr::Expression:
-		//	LogicalOrExpression ({fmlExpr::ConditionalTestExpression.condition=current} operator='?' thenOperand=Expression
-		//	elseSeparator=':'
-		//	elseOperand=Expression)?;
+		//ConditionalTestExpression returns fmlExpr::Expression
+		//    : LogicalOrExpression
+		//        ( {fmlExpr::ConditionalTestExpression.condition=current}
+		//            operator='?' thenOperand=Expression elseSeparator=':'
+		//            elseOperand=Expression
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LogicalOrExpression ({fmlExpr::ConditionalTestExpression.condition=current} operator='?' thenOperand=Expression
-		//elseSeparator=':' elseOperand=Expression)?
+		//LogicalOrExpression
+		//       ( {fmlExpr::ConditionalTestExpression.condition=current}
+		//           operator='?' thenOperand=Expression elseSeparator=':'
+		//           elseOperand=Expression
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//LogicalOrExpression
 		public RuleCall getLogicalOrExpressionParserRuleCall_0() { return cLogicalOrExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::ConditionalTestExpression.condition=current} operator='?' thenOperand=Expression elseSeparator=':'
-		//elseOperand=Expression)?
+		//( {fmlExpr::ConditionalTestExpression.condition=current}
+		//    operator='?' thenOperand=Expression elseSeparator=':'
+		//    elseOperand=Expression
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::ConditionalTestExpression.condition=current}
@@ -18359,29 +21904,38 @@
 		private final RuleCall cOperandLogicalAndExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
 		//// Logical Expression
-		//LogicalOrExpression fmlExpr::Expression:
-		//	LogicalAndExpression ({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('||' | 'or')
-		//	operand+=LogicalAndExpression (('||' | 'or') operand+=LogicalAndExpression)*)?;
+		//LogicalOrExpression returns fmlExpr::Expression
+		//    : LogicalAndExpression
+		//        ( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+		//            operator=( '||' | 'or' ) operand+=LogicalAndExpression
+		//            ( ( '||' | 'or' ) operand+=LogicalAndExpression )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LogicalAndExpression ({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('||' | 'or')
-		//operand+=LogicalAndExpression (('||' | 'or') operand+=LogicalAndExpression)*)?
+		//LogicalAndExpression
+		//       ( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+		//           operator=( '||' | 'or' ) operand+=LogicalAndExpression
+		//           ( ( '||' | 'or' ) operand+=LogicalAndExpression )*
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//LogicalAndExpression
 		public RuleCall getLogicalAndExpressionParserRuleCall_0() { return cLogicalAndExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('||' | 'or') operand+=LogicalAndExpression (('||' |
-		//'or') operand+=LogicalAndExpression)*)?
+		//( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+		//    operator=( '||' | 'or' ) operand+=LogicalAndExpression
+		//    ( ( '||' | 'or' ) operand+=LogicalAndExpression )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::LogicalAssociativeExpression.operand+=current}
 		public Action getLogicalAssociativeExpressionOperandAction_1_0() { return cLogicalAssociativeExpressionOperandAction_1_0; }
 		
-		//operator=('||' | 'or')
+		//operator=( '||' | 'or' )
 		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }
 		
-		//('||' | 'or')
+		//( '||' | 'or' )
 		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }
 		
 		//'||'
@@ -18396,10 +21950,10 @@
 		//LogicalAndExpression
 		public RuleCall getOperandLogicalAndExpressionParserRuleCall_1_2_0() { return cOperandLogicalAndExpressionParserRuleCall_1_2_0; }
 		
-		//(('||' | 'or') operand+=LogicalAndExpression)*
+		//( ( '||' | 'or' ) operand+=LogicalAndExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
-		//('||' | 'or')
+		//( '||' | 'or' )
 		public Alternatives getAlternatives_1_3_0() { return cAlternatives_1_3_0; }
 		
 		//'||'
@@ -18433,29 +21987,38 @@
 		private final Assignment cOperandAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
 		private final RuleCall cOperandBitwiseOrExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
-		//LogicalAndExpression fmlExpr::Expression:
-		//	BitwiseOrExpression ({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('&&' | 'and')
-		//	operand+=BitwiseOrExpression (('&&' | 'and') operand+=BitwiseOrExpression)*)?;
+		//LogicalAndExpression returns fmlExpr::Expression
+		//    : BitwiseOrExpression
+		//        ( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+		//            operator=( '&&' | 'and' ) operand+=BitwiseOrExpression
+		//            ( ( '&&' | 'and' ) operand+=BitwiseOrExpression )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//BitwiseOrExpression ({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('&&' | 'and')
-		//operand+=BitwiseOrExpression (('&&' | 'and') operand+=BitwiseOrExpression)*)?
+		//BitwiseOrExpression
+		//       ( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+		//           operator=( '&&' | 'and' ) operand+=BitwiseOrExpression
+		//           ( ( '&&' | 'and' ) operand+=BitwiseOrExpression )*
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//BitwiseOrExpression
 		public RuleCall getBitwiseOrExpressionParserRuleCall_0() { return cBitwiseOrExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('&&' | 'and') operand+=BitwiseOrExpression (('&&' |
-		//'and') operand+=BitwiseOrExpression)*)?
+		//( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+		//    operator=( '&&' | 'and' ) operand+=BitwiseOrExpression
+		//    ( ( '&&' | 'and' ) operand+=BitwiseOrExpression )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::LogicalAssociativeExpression.operand+=current}
 		public Action getLogicalAssociativeExpressionOperandAction_1_0() { return cLogicalAssociativeExpressionOperandAction_1_0; }
 		
-		//operator=('&&' | 'and')
+		//operator=( '&&' | 'and' )
 		public Assignment getOperatorAssignment_1_1() { return cOperatorAssignment_1_1; }
 		
-		//('&&' | 'and')
+		//( '&&' | 'and' )
 		public Alternatives getOperatorAlternatives_1_1_0() { return cOperatorAlternatives_1_1_0; }
 		
 		//'&&'
@@ -18470,10 +22033,10 @@
 		//BitwiseOrExpression
 		public RuleCall getOperandBitwiseOrExpressionParserRuleCall_1_2_0() { return cOperandBitwiseOrExpressionParserRuleCall_1_2_0; }
 		
-		//(('&&' | 'and') operand+=BitwiseOrExpression)*
+		//( ( '&&' | 'and' ) operand+=BitwiseOrExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
-		//('&&' | 'and')
+		//( '&&' | 'and' )
 		public Alternatives getAlternatives_1_3_0() { return cAlternatives_1_3_0; }
 		
 		//'&&'
@@ -18504,20 +22067,29 @@
 		private final RuleCall cOperandBitwiseXorExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
 		//// Bitwise Expression
-		//BitwiseOrExpression fmlExpr::Expression:
-		//	BitwiseXorExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='|'
-		//	operand+=BitwiseXorExpression ('|' operand+=BitwiseXorExpression)*)?;
+		//BitwiseOrExpression returns fmlExpr::Expression
+		//    : BitwiseXorExpression
+		//        ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//            operator='|' operand+=BitwiseXorExpression
+		//            ( '|' operand+=BitwiseXorExpression )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//BitwiseXorExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='|'
-		//operand+=BitwiseXorExpression ('|' operand+=BitwiseXorExpression)*)?
+		//BitwiseXorExpression
+		//       ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//           operator='|' operand+=BitwiseXorExpression
+		//           ( '|' operand+=BitwiseXorExpression )*
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//BitwiseXorExpression
 		public RuleCall getBitwiseXorExpressionParserRuleCall_0() { return cBitwiseXorExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='|' operand+=BitwiseXorExpression ('|'
-		//operand+=BitwiseXorExpression)*)?
+		//( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//    operator='|' operand+=BitwiseXorExpression
+		//    ( '|' operand+=BitwiseXorExpression )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::BitwiseAssociativeExpression.operand+=current}
@@ -18535,7 +22107,7 @@
 		//BitwiseXorExpression
 		public RuleCall getOperandBitwiseXorExpressionParserRuleCall_1_2_0() { return cOperandBitwiseXorExpressionParserRuleCall_1_2_0; }
 		
-		//('|' operand+=BitwiseXorExpression)*
+		//( '|' operand+=BitwiseXorExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//'|'
@@ -18562,20 +22134,29 @@
 		private final Assignment cOperandAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
 		private final RuleCall cOperandBitwiseAndExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
-		//BitwiseXorExpression fmlExpr::Expression:
-		//	BitwiseAndExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='^'
-		//	operand+=BitwiseAndExpression ('^' operand+=BitwiseAndExpression)*)?;
+		//BitwiseXorExpression returns fmlExpr::Expression
+		//    : BitwiseAndExpression
+		//        ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//            operator='^' operand+=BitwiseAndExpression
+		//            ( '^' operand+=BitwiseAndExpression )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//BitwiseAndExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='^'
-		//operand+=BitwiseAndExpression ('^' operand+=BitwiseAndExpression)*)?
+		//BitwiseAndExpression
+		//       ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//           operator='^' operand+=BitwiseAndExpression
+		//           ( '^' operand+=BitwiseAndExpression )*
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//BitwiseAndExpression
 		public RuleCall getBitwiseAndExpressionParserRuleCall_0() { return cBitwiseAndExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='^' operand+=BitwiseAndExpression ('^'
-		//operand+=BitwiseAndExpression)*)?
+		//( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//    operator='^' operand+=BitwiseAndExpression
+		//    ( '^' operand+=BitwiseAndExpression )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::BitwiseAssociativeExpression.operand+=current}
@@ -18593,7 +22174,7 @@
 		//BitwiseAndExpression
 		public RuleCall getOperandBitwiseAndExpressionParserRuleCall_1_2_0() { return cOperandBitwiseAndExpressionParserRuleCall_1_2_0; }
 		
-		//('^' operand+=BitwiseAndExpression)*
+		//( '^' operand+=BitwiseAndExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//'^'
@@ -18620,20 +22201,29 @@
 		private final Assignment cOperandAssignment_1_3_1 = (Assignment)cGroup_1_3.eContents().get(1);
 		private final RuleCall cOperandEqualityExpressionParserRuleCall_1_3_1_0 = (RuleCall)cOperandAssignment_1_3_1.eContents().get(0);
 		
-		//BitwiseAndExpression fmlExpr::Expression:
-		//	EqualityExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='&' operand+=EqualityExpression
-		//	('&' operand+=EqualityExpression)*)?;
+		//BitwiseAndExpression returns fmlExpr::Expression
+		//    : EqualityExpression
+		//        ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//            operator='&' operand+=EqualityExpression
+		//            ( '&' operand+=EqualityExpression )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//EqualityExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='&' operand+=EqualityExpression
-		//('&' operand+=EqualityExpression)*)?
+		//EqualityExpression
+		//       ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//           operator='&' operand+=EqualityExpression
+		//           ( '&' operand+=EqualityExpression )*
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//EqualityExpression
 		public RuleCall getEqualityExpressionParserRuleCall_0() { return cEqualityExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='&' operand+=EqualityExpression ('&'
-		//operand+=EqualityExpression)*)?
+		//( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+		//    operator='&' operand+=EqualityExpression
+		//    ( '&' operand+=EqualityExpression )*
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::BitwiseAssociativeExpression.operand+=current}
@@ -18651,7 +22241,7 @@
 		//EqualityExpression
 		public RuleCall getOperandEqualityExpressionParserRuleCall_1_2_0() { return cOperandEqualityExpressionParserRuleCall_1_2_0; }
 		
-		//('&' operand+=EqualityExpression)*
+		//( '&' operand+=EqualityExpression )*
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//'&'
@@ -18675,19 +22265,26 @@
 		private final RuleCall cRightOperandRelationalExpressionParserRuleCall_1_2_0 = (RuleCall)cRightOperandAssignment_1_2.eContents().get(0);
 		
 		//// Equality Expression
-		//EqualityExpression fmlExpr::Expression:
-		//	RelationalExpression ({fmlExpr::EqualityBinaryExpression.leftOperand=current} operator=EqualityOperator
-		//	rightOperand=RelationalExpression)?;
+		//EqualityExpression returns fmlExpr::Expression
+		//    : RelationalExpression
+		//        ( {fmlExpr::EqualityBinaryExpression.leftOperand=current}
+		//            operator=EqualityOperator rightOperand=RelationalExpression
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//RelationalExpression ({fmlExpr::EqualityBinaryExpression.leftOperand=current} operator=EqualityOperator
-		//rightOperand=RelationalExpression)?
+		//RelationalExpression
+		//       ( {fmlExpr::EqualityBinaryExpression.leftOperand=current}
+		//           operator=EqualityOperator rightOperand=RelationalExpression
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//RelationalExpression
 		public RuleCall getRelationalExpressionParserRuleCall_0() { return cRelationalExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::EqualityBinaryExpression.leftOperand=current} operator=EqualityOperator rightOperand=RelationalExpression)?
+		//( {fmlExpr::EqualityBinaryExpression.leftOperand=current}
+		//    operator=EqualityOperator rightOperand=RelationalExpression
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::EqualityBinaryExpression.leftOperand=current}
@@ -18715,8 +22312,9 @@
 		private final Keyword cEqualsSignExclamationMarkEqualsSignKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
 		private final Keyword cEqualsSignSolidusEqualsSignKeyword_5 = (Keyword)cAlternatives.eContents().get(5);
 		
-		//EqualityOperator:
-		//	'==' | '!=' | '===' | '!==' | '=!=' | '=/=';
+		//EqualityOperator
+		//    : '==' | '!=' | '===' | '!==' | '=!=' | '=/='
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'==' | '!=' | '===' | '!==' | '=!=' | '=/='
@@ -18758,23 +22356,35 @@
 		private final RuleCall cRightOperandAdditiveExpressionParserRuleCall_1_3_2_0 = (RuleCall)cRightOperandAssignment_1_3_2.eContents().get(0);
 		
 		//// Relational Binary Expression
-		//RelationalExpression fmlExpr::Expression:
-		//	AdditiveExpression ({fmlExpr::RelationalBinaryExpression.leftOperand=current} operator=RelationalOperator
-		//	rightOperand=AdditiveExpression ({fmlExpr::RelationalTernaryExpression.leftRelation=current}
-		//	rightOperator=RelationalOperator rightOperand=AdditiveExpression)?)?;
+		//RelationalExpression returns fmlExpr::Expression
+		//    : AdditiveExpression
+		//        ( {fmlExpr::RelationalBinaryExpression.leftOperand=current}
+		//            operator=RelationalOperator rightOperand=AdditiveExpression
+		//            ( {fmlExpr::RelationalTernaryExpression.leftRelation=current}
+		//                rightOperator=RelationalOperator rightOperand=AdditiveExpression
+		//            )?
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//AdditiveExpression ({fmlExpr::RelationalBinaryExpression.leftOperand=current} operator=RelationalOperator
-		//rightOperand=AdditiveExpression ({fmlExpr::RelationalTernaryExpression.leftRelation=current}
-		//rightOperator=RelationalOperator rightOperand=AdditiveExpression)?)?
+		//AdditiveExpression
+		//       ( {fmlExpr::RelationalBinaryExpression.leftOperand=current}
+		//           operator=RelationalOperator rightOperand=AdditiveExpression
+		//           ( {fmlExpr::RelationalTernaryExpression.leftRelation=current}
+		//               rightOperator=RelationalOperator rightOperand=AdditiveExpression
+		//           )?
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//AdditiveExpression
 		public RuleCall getAdditiveExpressionParserRuleCall_0() { return cAdditiveExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::RelationalBinaryExpression.leftOperand=current} operator=RelationalOperator rightOperand=AdditiveExpression
-		//({fmlExpr::RelationalTernaryExpression.leftRelation=current} rightOperator=RelationalOperator
-		//rightOperand=AdditiveExpression)?)?
+		//( {fmlExpr::RelationalBinaryExpression.leftOperand=current}
+		//    operator=RelationalOperator rightOperand=AdditiveExpression
+		//    ( {fmlExpr::RelationalTernaryExpression.leftRelation=current}
+		//        rightOperator=RelationalOperator rightOperand=AdditiveExpression
+		//    )?
+		//)?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlExpr::RelationalBinaryExpression.leftOperand=current}
@@ -18792,8 +22402,9 @@
 		//AdditiveExpression
 		public RuleCall getRightOperandAdditiveExpressionParserRuleCall_1_2_0() { return cRightOperandAdditiveExpressionParserRuleCall_1_2_0; }
 		
-		//({fmlExpr::RelationalTernaryExpression.leftRelation=current} rightOperator=RelationalOperator
-		//rightOperand=AdditiveExpression)?
+		//( {fmlExpr::RelationalTernaryExpression.leftRelation=current}
+		//    rightOperator=RelationalOperator rightOperand=AdditiveExpression
+		//)?
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//{fmlExpr::RelationalTernaryExpression.leftRelation=current}
@@ -18820,8 +22431,9 @@
 		private final Keyword cGreaterThanSignEqualsSignKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
 		private final Keyword cInKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
 		
-		//RelationalOperator:
-		//	'<' | '>' | '<=' | '>=' | 'in';
+		//RelationalOperator
+		//    : '<' | '>' | '<=' | '>=' | 'in'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'<' | '>' | '<=' | '>=' | 'in'
@@ -18869,29 +22481,43 @@
 		private final RuleCall cOperandMultiplicativeExpressionParserRuleCall_1_1_3_1_0 = (RuleCall)cOperandAssignment_1_1_3_1.eContents().get(0);
 		
 		//// Arithmetic Associative (left) Expression
-		//AdditiveExpression fmlExpr::Expression:
-		//	MultiplicativeExpression ({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='+'
-		//	operand+=MultiplicativeExpression ('+' operand+=MultiplicativeExpression)* |
-		//	{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='-' operand+=MultiplicativeExpression ('-'
-		//	operand+=MultiplicativeExpression)*)*;
+		//AdditiveExpression returns fmlExpr::Expression
+		//    : MultiplicativeExpression
+		//        ( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//            operator='+' operand+=MultiplicativeExpression
+		//            ( '+' operand+=MultiplicativeExpression )* )
+		//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//            operator='-' operand+=MultiplicativeExpression
+		//            ( '-' operand+=MultiplicativeExpression )* )
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//MultiplicativeExpression ({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='+'
-		//operand+=MultiplicativeExpression ('+' operand+=MultiplicativeExpression)* |
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='-' operand+=MultiplicativeExpression ('-'
-		//operand+=MultiplicativeExpression)*)*
+		//MultiplicativeExpression
+		//       ( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='+' operand+=MultiplicativeExpression
+		//           ( '+' operand+=MultiplicativeExpression )* )
+		//       | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='-' operand+=MultiplicativeExpression
+		//           ( '-' operand+=MultiplicativeExpression )* )
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
 		//MultiplicativeExpression
 		public RuleCall getMultiplicativeExpressionParserRuleCall_0() { return cMultiplicativeExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='+' operand+=MultiplicativeExpression ('+'
-		//operand+=MultiplicativeExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='-'
-		//operand+=MultiplicativeExpression ('-' operand+=MultiplicativeExpression)*)*
+		//( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//    operator='+' operand+=MultiplicativeExpression
+		//    ( '+' operand+=MultiplicativeExpression )* )
+		//| ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//    operator='-' operand+=MultiplicativeExpression
+		//    ( '-' operand+=MultiplicativeExpression )* )
+		//)*
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='+' operand+=MultiplicativeExpression ('+'
-		//operand+=MultiplicativeExpression)*
+		//( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='+' operand+=MultiplicativeExpression
+		//           ( '+' operand+=MultiplicativeExpression )* )
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current}
@@ -18909,7 +22535,7 @@
 		//MultiplicativeExpression
 		public RuleCall getOperandMultiplicativeExpressionParserRuleCall_1_0_2_0() { return cOperandMultiplicativeExpressionParserRuleCall_1_0_2_0; }
 		
-		//('+' operand+=MultiplicativeExpression)*
+		//( '+' operand+=MultiplicativeExpression )*
 		public Group getGroup_1_0_3() { return cGroup_1_0_3; }
 		
 		//'+'
@@ -18921,8 +22547,9 @@
 		//MultiplicativeExpression
 		public RuleCall getOperandMultiplicativeExpressionParserRuleCall_1_0_3_1_0() { return cOperandMultiplicativeExpressionParserRuleCall_1_0_3_1_0; }
 		
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='-' operand+=MultiplicativeExpression ('-'
-		//operand+=MultiplicativeExpression)*
+		//( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='-' operand+=MultiplicativeExpression
+		//           ( '-' operand+=MultiplicativeExpression )* )
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current}
@@ -18940,7 +22567,7 @@
 		//MultiplicativeExpression
 		public RuleCall getOperandMultiplicativeExpressionParserRuleCall_1_1_2_0() { return cOperandMultiplicativeExpressionParserRuleCall_1_1_2_0; }
 		
-		//('-' operand+=MultiplicativeExpression)*
+		//( '-' operand+=MultiplicativeExpression )*
 		public Group getGroup_1_1_3() { return cGroup_1_1_3; }
 		
 		//'-'
@@ -18998,36 +22625,61 @@
 		private final Assignment cOperandAssignment_1_3_3_1 = (Assignment)cGroup_1_3_3.eContents().get(1);
 		private final RuleCall cOperandUnaryExpressionParserRuleCall_1_3_3_1_0 = (RuleCall)cOperandAssignment_1_3_3_1.eContents().get(0);
 		
-		//MultiplicativeExpression fmlExpr::Expression:
-		//	UnaryExpression ({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='*' operand+=UnaryExpression
-		//	('*' operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='**'
-		//	operand+=UnaryExpression ('**' operand+=UnaryExpression)* |
-		//	{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='/' operand+=UnaryExpression ('/'
-		//	operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='%'
-		//	operand+=UnaryExpression ('%' operand+=UnaryExpression)*)*;
+		//MultiplicativeExpression returns fmlExpr::Expression
+		//    : UnaryExpression
+		//        ( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//            operator='*' operand+=UnaryExpression
+		//            ( '*' operand+=UnaryExpression )* )
+		//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//            operator='**' operand+=UnaryExpression
+		//            ( '**' operand+=UnaryExpression )* )
+		//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//            operator='/' operand+=UnaryExpression
+		//            ( '/' operand+=UnaryExpression )* )
+		//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//            operator='%' operand+=UnaryExpression
+		//            ( '%' operand+=UnaryExpression )* )
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//UnaryExpression ({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='*' operand+=UnaryExpression ('*'
-		//operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='**'
-		//operand+=UnaryExpression ('**' operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
-		//operator='/' operand+=UnaryExpression ('/' operand+=UnaryExpression)* |
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='%' operand+=UnaryExpression ('%'
-		//operand+=UnaryExpression)*)*
+		//UnaryExpression
+		//       ( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='*' operand+=UnaryExpression
+		//           ( '*' operand+=UnaryExpression )* )
+		//       | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='**' operand+=UnaryExpression
+		//           ( '**' operand+=UnaryExpression )* )
+		//       | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='/' operand+=UnaryExpression
+		//           ( '/' operand+=UnaryExpression )* )
+		//       | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='%' operand+=UnaryExpression
+		//           ( '%' operand+=UnaryExpression )* )
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
 		//UnaryExpression
 		public RuleCall getUnaryExpressionParserRuleCall_0() { return cUnaryExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='*' operand+=UnaryExpression ('*'
-		//operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='**'
-		//operand+=UnaryExpression ('**' operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
-		//operator='/' operand+=UnaryExpression ('/' operand+=UnaryExpression)* |
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='%' operand+=UnaryExpression ('%'
-		//operand+=UnaryExpression)*)*
+		//( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//    operator='*' operand+=UnaryExpression
+		//    ( '*' operand+=UnaryExpression )* )
+		//| ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//    operator='**' operand+=UnaryExpression
+		//    ( '**' operand+=UnaryExpression )* )
+		//| ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//    operator='/' operand+=UnaryExpression
+		//    ( '/' operand+=UnaryExpression )* )
+		//| ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//    operator='%' operand+=UnaryExpression
+		//    ( '%' operand+=UnaryExpression )* )
+		//)*
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='*' operand+=UnaryExpression ('*'
-		//operand+=UnaryExpression)*
+		//( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='*' operand+=UnaryExpression
+		//           ( '*' operand+=UnaryExpression )* )
 		public Group getGroup_1_0() { return cGroup_1_0; }
 		
 		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current}
@@ -19045,7 +22697,7 @@
 		//UnaryExpression
 		public RuleCall getOperandUnaryExpressionParserRuleCall_1_0_2_0() { return cOperandUnaryExpressionParserRuleCall_1_0_2_0; }
 		
-		//('*' operand+=UnaryExpression)*
+		//( '*' operand+=UnaryExpression )*
 		public Group getGroup_1_0_3() { return cGroup_1_0_3; }
 		
 		//'*'
@@ -19057,8 +22709,9 @@
 		//UnaryExpression
 		public RuleCall getOperandUnaryExpressionParserRuleCall_1_0_3_1_0() { return cOperandUnaryExpressionParserRuleCall_1_0_3_1_0; }
 		
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='**' operand+=UnaryExpression ('**'
-		//operand+=UnaryExpression)*
+		//( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='**' operand+=UnaryExpression
+		//           ( '**' operand+=UnaryExpression )* )
 		public Group getGroup_1_1() { return cGroup_1_1; }
 		
 		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current}
@@ -19076,7 +22729,7 @@
 		//UnaryExpression
 		public RuleCall getOperandUnaryExpressionParserRuleCall_1_1_2_0() { return cOperandUnaryExpressionParserRuleCall_1_1_2_0; }
 		
-		//('**' operand+=UnaryExpression)*
+		//( '**' operand+=UnaryExpression )*
 		public Group getGroup_1_1_3() { return cGroup_1_1_3; }
 		
 		//'**'
@@ -19088,8 +22741,9 @@
 		//UnaryExpression
 		public RuleCall getOperandUnaryExpressionParserRuleCall_1_1_3_1_0() { return cOperandUnaryExpressionParserRuleCall_1_1_3_1_0; }
 		
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='/' operand+=UnaryExpression ('/'
-		//operand+=UnaryExpression)*
+		//( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='/' operand+=UnaryExpression
+		//           ( '/' operand+=UnaryExpression )* )
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current}
@@ -19107,7 +22761,7 @@
 		//UnaryExpression
 		public RuleCall getOperandUnaryExpressionParserRuleCall_1_2_2_0() { return cOperandUnaryExpressionParserRuleCall_1_2_2_0; }
 		
-		//('/' operand+=UnaryExpression)*
+		//( '/' operand+=UnaryExpression )*
 		public Group getGroup_1_2_3() { return cGroup_1_2_3; }
 		
 		//'/'
@@ -19119,8 +22773,9 @@
 		//UnaryExpression
 		public RuleCall getOperandUnaryExpressionParserRuleCall_1_2_3_1_0() { return cOperandUnaryExpressionParserRuleCall_1_2_3_1_0; }
 		
-		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='%' operand+=UnaryExpression ('%'
-		//operand+=UnaryExpression)*
+		//( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+		//           operator='%' operand+=UnaryExpression
+		//           ( '%' operand+=UnaryExpression )* )
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//{fmlExpr::ArithmeticAssociativeExpression.operand+=current}
@@ -19138,7 +22793,7 @@
 		//UnaryExpression
 		public RuleCall getOperandUnaryExpressionParserRuleCall_1_3_2_0() { return cOperandUnaryExpressionParserRuleCall_1_3_2_0; }
 		
-		//('%' operand+=UnaryExpression)*
+		//( '%' operand+=UnaryExpression )*
 		public Group getGroup_1_3_3() { return cGroup_1_3_3; }
 		
 		//'%'
@@ -19165,24 +22820,32 @@
 		private final RuleCall cPrimaryExpressionParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
 		
 		//// Unary Expression
-		//UnaryExpression fmlExpr::Expression:
-		//	LiteralTerminalExpression
-		//	| ArithmeticUnaryExpression
-		//	| LogicalUnaryExpression
-		//	| QuantifiedLogicalExpression
-		//	| BitwiseUnaryExpression
-		//	| NewfreshExpression
-		//	| CastExpression
-		//	//	| CollectionFunctionExpression
-		//
-		//	| PrefixUnaryExpression
-		//	| PostfixUnaryExpression
-		//	| PrimaryExpression;
+		//UnaryExpression returns fmlExpr::Expression
+		//    : LiteralTerminalExpression
+		//    | ArithmeticUnaryExpression
+		//    | LogicalUnaryExpression
+		//    | QuantifiedLogicalExpression
+		//    | BitwiseUnaryExpression
+		//    | NewfreshExpression
+		//    | CastExpression
+		////    | CollectionFunctionExpression
+		//    | PrefixUnaryExpression
+		//    | PostfixUnaryExpression
+		//    | PrimaryExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralTerminalExpression | ArithmeticUnaryExpression | LogicalUnaryExpression | QuantifiedLogicalExpression |
-		//BitwiseUnaryExpression | NewfreshExpression | CastExpression //	| CollectionFunctionExpression
-		//| PrefixUnaryExpression | PostfixUnaryExpression | PrimaryExpression
+		// LiteralTerminalExpression
+		//    | ArithmeticUnaryExpression
+		//    | LogicalUnaryExpression
+		//    | QuantifiedLogicalExpression
+		//    | BitwiseUnaryExpression
+		//    | NewfreshExpression
+		//    | CastExpression
+		////    | CollectionFunctionExpression
+		//    | PrefixUnaryExpression
+		//    | PostfixUnaryExpression
+		//    | PrimaryExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralTerminalExpression
@@ -19220,8 +22883,9 @@
 		private final RuleCall cIncrementOrDecrementPostfixExpressionParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//// Postfix Increment or Decrement Expression
-		//PostfixUnaryExpression fmlExpr::Expression:
-		//	IncrementOrDecrementPostfixExpression;
+		//PostfixUnaryExpression returns fmlExpr::Expression
+		//    : IncrementOrDecrementPostfixExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//IncrementOrDecrementPostfixExpression
@@ -19237,11 +22901,12 @@
 		private final RuleCall cOperatorAffixOperatorParserRuleCall_1_0_0 = (RuleCall)cOperatorAlternatives_1_0.eContents().get(0);
 		private final Keyword cOperatorGreaterThanSignEqualsSignGreaterThanSignKeyword_1_0_1 = (Keyword)cOperatorAlternatives_1_0.eContents().get(1);
 		
-		//IncrementOrDecrementPostfixExpression fmlExpr::IncrementOrDecrementPostfixExpression:
-		//	leftHandSide=LeftHandSideExpression operator=(AffixOperator | '>=>');
+		//IncrementOrDecrementPostfixExpression returns fmlExpr::IncrementOrDecrementPostfixExpression
+		//    : leftHandSide=LeftHandSideExpression operator=(AffixOperator  | '>=>')
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//leftHandSide=LeftHandSideExpression operator=(AffixOperator | '>=>')
+		//leftHandSide=LeftHandSideExpression operator=(AffixOperator  | '>=>')
 		public Group getGroup() { return cGroup; }
 		
 		//leftHandSide=LeftHandSideExpression
@@ -19250,10 +22915,10 @@
 		//LeftHandSideExpression
 		public RuleCall getLeftHandSideLeftHandSideExpressionParserRuleCall_0_0() { return cLeftHandSideLeftHandSideExpressionParserRuleCall_0_0; }
 		
-		//operator=(AffixOperator | '>=>')
+		//operator=(AffixOperator  | '>=>')
 		public Assignment getOperatorAssignment_1() { return cOperatorAssignment_1; }
 		
-		//(AffixOperator | '>=>')
+		//(AffixOperator  | '>=>')
 		public Alternatives getOperatorAlternatives_1_0() { return cOperatorAlternatives_1_0; }
 		
 		//AffixOperator
@@ -19267,8 +22932,9 @@
 		private final RuleCall cIncrementOrDecrementPrefixExpressionParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//// Prefix Increment or Decrement Expression
-		//PrefixUnaryExpression fmlExpr::Expression:
-		//	IncrementOrDecrementPrefixExpression;
+		//PrefixUnaryExpression returns fmlExpr::Expression
+		//    : IncrementOrDecrementPrefixExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//IncrementOrDecrementPrefixExpression
@@ -19282,8 +22948,9 @@
 		private final Assignment cLeftHandSideAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cLeftHandSideLeftHandSideExpressionParserRuleCall_1_0 = (RuleCall)cLeftHandSideAssignment_1.eContents().get(0);
 		
-		//IncrementOrDecrementPrefixExpression fmlExpr::IncrementOrDecrementPrefixExpression:
-		//	operator=AffixOperator leftHandSide=LeftHandSideExpression;
+		//IncrementOrDecrementPrefixExpression returns fmlExpr::IncrementOrDecrementPrefixExpression
+		//    : operator=AffixOperator leftHandSide=LeftHandSideExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//operator=AffixOperator leftHandSide=LeftHandSideExpression
@@ -19307,8 +22974,9 @@
 		private final Keyword cPlusSignPlusSignKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
 		private final Keyword cHyphenMinusHyphenMinusKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
 		
-		//AffixOperator:
-		//	'++' | '--';
+		//AffixOperator
+		//    : '++' | '--'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'++' | '--'
@@ -19335,12 +23003,14 @@
 		private final Keyword cRightParenthesisKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
 		
 		//// Newfresh Unary Expression
-		//NewfreshExpression fmlExpr::NewfreshExpression:
-		//	'newfresh' leftHandSide=LeftHandSideExpression
-		//	| '(:' leftHandSide=LeftHandSideExpression 'newfresh' ')';
+		//NewfreshExpression returns fmlExpr::NewfreshExpression
+		//    : 'newfresh' leftHandSide=LeftHandSideExpression
+		//    | '(:' leftHandSide=LeftHandSideExpression 'newfresh' ')'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'newfresh' leftHandSide=LeftHandSideExpression | '(:' leftHandSide=LeftHandSideExpression 'newfresh' ')'
+		//'newfresh' leftHandSide=LeftHandSideExpression
+		//   | '(:' leftHandSide=LeftHandSideExpression 'newfresh' ')'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//'newfresh' leftHandSide=LeftHandSideExpression
@@ -19388,12 +23058,14 @@
 		private final Keyword cRightParenthesisKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
 		//// Cast Expression
-		//CastExpression fmlExpr::CastExpression:
-		//	'ctor' '<' datatype=[fmlType::DataType|ESUfid] '>'
-		//	'(' operand=Expression ')';
+		//CastExpression returns fmlExpr::CastExpression
+		//    : 'ctor' '<' datatype=[fmlType::DataType|ESUfid] '>'
+		//         '(' operand=Expression ')'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'ctor' '<' datatype=[fmlType::DataType|ESUfid] '>' '(' operand=Expression ')'
+		//'ctor' '<' datatype=[fmlType::DataType|ESUfid] '>'
+		//        '(' operand=Expression ')'
 		public Group getGroup() { return cGroup; }
 		
 		//'ctor'
@@ -19443,16 +23115,19 @@
 		private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
 		
 		////CollectionFunctionExpression  fmlExpr::MixTupleExpression
-		//CollectionFunctionExpression fmlExpr::Expression:
-		//	'empty(' Expression ')'
-		//	| 'nonempty(' Expression ')'
-		//	| 'size(' Expression ')';
+		//CollectionFunctionExpression returns fmlExpr::Expression
+		//    : 'empty('    Expression ')'
+		//    | 'nonempty(' Expression ')'
+		//    | 'size('     Expression ')'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'empty(' Expression ')' | 'nonempty(' Expression ')' | 'size(' Expression ')'
+		//'empty('    Expression ')'
+		//   | 'nonempty(' Expression ')'
+		//   | 'size('     Expression ')'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//'empty(' Expression ')'
+		//'empty('    Expression ')'
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//'empty('
@@ -19476,7 +23151,7 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_1_2() { return cRightParenthesisKeyword_1_2; }
 		
-		//'size(' Expression ')'
+		//'size('     Expression ')'
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'size('
@@ -19497,8 +23172,9 @@
 		private final RuleCall cOperandUnaryExpressionParserRuleCall_1_0 = (RuleCall)cOperandAssignment_1.eContents().get(0);
 		
 		//// Arithmetic Unary Expression
-		//ArithmeticUnaryExpression fmlExpr::ArithmeticUnaryExpression:
-		//	operator=ArithmeticUnaryOperator operand=UnaryExpression;
+		//ArithmeticUnaryExpression returns fmlExpr::ArithmeticUnaryExpression
+		//    : operator=ArithmeticUnaryOperator operand=UnaryExpression
+		//;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//operator=ArithmeticUnaryOperator operand=UnaryExpression
@@ -19522,8 +23198,9 @@
 		private final Keyword cPlusSignKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
 		private final Keyword cHyphenMinusKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
 		
-		//ArithmeticUnaryOperator:
-		//	'+' | '-';
+		//ArithmeticUnaryOperator
+		//    : '+' | '-'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//'+' | '-'
@@ -19556,20 +23233,22 @@
 		private final Keyword cRightParenthesisKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
 		//// Logical Quantified Expression
-		//QuantifiedLogicalExpression fmlExpr::QuantifiedLogicalExpression:
-		//	quantifier=('forall' | 'exists')
-		//	'<' variable+=BoundVariable (',' variable+=BoundVariable)* '>'
-		//	'(' predicate=Expression ')';
+		//QuantifiedLogicalExpression returns fmlExpr::QuantifiedLogicalExpression
+		//    : quantifier=( 'forall' | 'exists' )
+		//      '<'  variable+=BoundVariable  ( ',' variable+=BoundVariable )*  '>'
+		//      '('  predicate=Expression  ')'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//quantifier=('forall' | 'exists') '<' variable+=BoundVariable (',' variable+=BoundVariable)* '>' '(' predicate=Expression
-		//')'
+		//quantifier=( 'forall' | 'exists' )
+		//     '<'  variable+=BoundVariable  ( ',' variable+=BoundVariable )*  '>'
+		//     '('  predicate=Expression  ')'
 		public Group getGroup() { return cGroup; }
 		
-		//quantifier=('forall' | 'exists')
+		//quantifier=( 'forall' | 'exists' )
 		public Assignment getQuantifierAssignment_0() { return cQuantifierAssignment_0; }
 		
-		//('forall' | 'exists')
+		//( 'forall' | 'exists' )
 		public Alternatives getQuantifierAlternatives_0_0() { return cQuantifierAlternatives_0_0; }
 		
 		//'forall'
@@ -19587,7 +23266,7 @@
 		//BoundVariable
 		public RuleCall getVariableBoundVariableParserRuleCall_2_0() { return cVariableBoundVariableParserRuleCall_2_0; }
 		
-		//(',' variable+=BoundVariable)*
+		//( ',' variable+=BoundVariable )*
 		public Group getGroup_3() { return cGroup_3; }
 		
 		//','
@@ -19623,11 +23302,12 @@
 		private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cTypeDataTypeParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0);
 		
-		//BoundVariable fmlInfra::Variable:
-		//	name=ESIdentifier ':' type=DataType;
+		//BoundVariable returns fmlInfra::Variable
+		//    : name=ESIdentifier  ':'  type=DataType
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=ESIdentifier ':' type=DataType
+		//name=ESIdentifier  ':'  type=DataType
 		public Group getGroup() { return cGroup; }
 		
 		//name=ESIdentifier
@@ -19656,8 +23336,9 @@
 		private final RuleCall cOperandUnaryExpressionParserRuleCall_1_0 = (RuleCall)cOperandAssignment_1.eContents().get(0);
 		
 		//// Logical Unary Expression
-		//LogicalUnaryExpression fmlExpr::LogicalUnaryExpression:
-		//	operator=('!' | 'not') operand=UnaryExpression;
+		//LogicalUnaryExpression returns fmlExpr::LogicalUnaryExpression
+		//    : operator=('!' | 'not') operand=UnaryExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//operator=('!' | 'not') operand=UnaryExpression
@@ -19690,8 +23371,9 @@
 		private final RuleCall cOperandUnaryExpressionParserRuleCall_1_0 = (RuleCall)cOperandAssignment_1.eContents().get(0);
 		
 		//// Logical Unary Expression
-		//BitwiseUnaryExpression fmlExpr::BitwiseUnaryExpression:
-		//	operator='~' operand=UnaryExpression;
+		//BitwiseUnaryExpression returns fmlExpr::BitwiseUnaryExpression
+		//    :operator='~' operand=UnaryExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		//operator='~' operand=UnaryExpression
@@ -19771,55 +23453,111 @@
 		private final RuleCall cArgMixTupleExpressionListParserRuleCall_2_4_3_1_1_0 = (RuleCall)cArgAssignment_2_4_3_1_1.eContents().get(0);
 		private final Keyword cRightParenthesisKeyword_2_4_3_1_2 = (Keyword)cGroup_2_4_3_1.eContents().get(2);
 		
-		//PrimaryExpression fmlExpr::Expression:
-		//	BaseExpression ({fmlExpr::ValueElementSpecification.parent=current}
-		//	'.' //kind=ValueDotFieldExpressionKind
-		//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-		//	arg=PositionalTupleExpressionList ']'
-		//	// '(' parameter ',' ... ',' parameter ')'
-		//	| kind=ValueParameterExpressionKind
-		//	arg=MixTupleExpressionList ')')?)* ({fmlExpr::ValueElementSpecification.parent=current}
-		//	'->' //kind=ValueArrowFieldExpressionKind
-		//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-		//	arg=PositionalTupleExpressionList ']'
-		//	// '(' parameter ',' ... ',' parameter ')'
-		//	| kind=ValueParameterExpressionKind
-		//	arg=MixTupleExpressionList ')')? ({fmlExpr::ValueElementSpecification.parent=current}
-		//	'.' //kind=ValueDotFieldExpressionKind
-		//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-		//	arg=PositionalTupleExpressionList ']'
-		//	// '(' parameter ',' ... ',' parameter ')'
-		//	| kind=ValueParameterExpressionKind
-		//	arg=MixTupleExpressionList ')')?)*)?;
+		//PrimaryExpression returns fmlExpr::Expression
+		//    : BaseExpression
+		//        // '.' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '.' //kind=ValueDotFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		//            // '(' parameter ',' ... ',' parameter ')'
+		//            | kind=ValueParameterExpressionKind
+		//                arg=MixTupleExpressionList  ')'
+		//            )?
+		//        )*
+		//        // '->' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '->' //kind=ValueArrowFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		//            // '(' parameter ',' ... ',' parameter ')'
+		//            | kind=ValueParameterExpressionKind
+		//                arg=MixTupleExpressionList  ')'
+		//            )?
+		//            // '.' element
+		//            ( { fmlExpr::ValueElementSpecification.parent=current }
+		//                 '.' //kind=ValueDotFieldExpressionKind
+		//                element=[fmlCommon::NamedElement|ESIdentifier]
+		//                // '[' index ',' ... ',' index ']'
+		//                ( kind=ValueIndexExpressionKind
+		//                    arg=PositionalTupleExpressionList  ']'
+		//                // '(' parameter ',' ... ',' parameter ')'
+		//                | kind=ValueParameterExpressionKind
+		//                    arg=MixTupleExpressionList  ')'
+		//                )?
+		//            )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//BaseExpression ({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?)*
-		//({fmlExpr::ValueElementSpecification.parent=current} '->' //kind=ValueArrowFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?
-		//({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?)*)?
+		//BaseExpression
+		//       // '.' element
+		//       ( { fmlExpr::ValueElementSpecification.parent=current }
+		//           '.' //kind=ValueDotFieldExpressionKind
+		//           element=[fmlCommon::NamedElement|ESIdentifier]
+		//           // '[' index ',' ... ',' index ']'
+		//           ( kind=ValueIndexExpressionKind
+		//               arg=PositionalTupleExpressionList  ']'
+		//           // '(' parameter ',' ... ',' parameter ')'
+		//           | kind=ValueParameterExpressionKind
+		//               arg=MixTupleExpressionList  ')'
+		//           )?
+		//       )*
+		//       // '->' element
+		//       ( { fmlExpr::ValueElementSpecification.parent=current }
+		//           '->' //kind=ValueArrowFieldExpressionKind
+		//           element=[fmlCommon::NamedElement|ESIdentifier]
+		//           // '[' index ',' ... ',' index ']'
+		//           ( kind=ValueIndexExpressionKind
+		//               arg=PositionalTupleExpressionList  ']'
+		//           // '(' parameter ',' ... ',' parameter ')'
+		//           | kind=ValueParameterExpressionKind
+		//               arg=MixTupleExpressionList  ')'
+		//           )?
+		//           // '.' element
+		//           ( { fmlExpr::ValueElementSpecification.parent=current }
+		//                '.' //kind=ValueDotFieldExpressionKind
+		//               element=[fmlCommon::NamedElement|ESIdentifier]
+		//               // '[' index ',' ... ',' index ']'
+		//               ( kind=ValueIndexExpressionKind
+		//                   arg=PositionalTupleExpressionList  ']'
+		//               // '(' parameter ',' ... ',' parameter ')'
+		//               | kind=ValueParameterExpressionKind
+		//                   arg=MixTupleExpressionList  ')'
+		//               )?
+		//           )*
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//BaseExpression
 		public RuleCall getBaseExpressionParserRuleCall_0() { return cBaseExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?)*
+		//// '.' element
+		//( { fmlExpr::ValueElementSpecification.parent=current }
+		//    '.' //kind=ValueDotFieldExpressionKind
+		//    element=[fmlCommon::NamedElement|ESIdentifier]
+		//    // '[' index ',' ... ',' index ']'
+		//    ( kind=ValueIndexExpressionKind
+		//        arg=PositionalTupleExpressionList  ']'
+		//    // '(' parameter ',' ... ',' parameter ')'
+		//    | kind=ValueParameterExpressionKind
+		//        arg=MixTupleExpressionList  ')'
+		//    )?
+		//)*
 		public Group getGroup_1() { return cGroup_1; }
 		
-		//{fmlExpr::ValueElementSpecification.parent=current}
+		//{ fmlExpr::ValueElementSpecification.parent=current }
 		public Action getValueElementSpecificationParentAction_1_0() { return cValueElementSpecificationParentAction_1_0; }
 		
 		//'.'
 		public Keyword getFullStopKeyword_1_1() { return cFullStopKeyword_1_1; }
 		
 		////kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier]
+		//           element=[fmlCommon::NamedElement|ESIdentifier]
 		public Assignment getElementAssignment_1_2() { return cElementAssignment_1_2; }
 		
 		//[fmlCommon::NamedElement|ESIdentifier]
@@ -19828,11 +23566,17 @@
 		//ESIdentifier
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_1_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_1_2_0_1; }
 		
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?
+		//// '[' index ',' ... ',' index ']'
+		//( kind=ValueIndexExpressionKind
+		//    arg=PositionalTupleExpressionList  ']'
+		//// '(' parameter ',' ... ',' parameter ')'
+		//| kind=ValueParameterExpressionKind
+		//    arg=MixTupleExpressionList  ')'
+		//)?
 		public Alternatives getAlternatives_1_3() { return cAlternatives_1_3; }
 		
-		//kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']'
+		//kind=ValueIndexExpressionKind
+		//               arg=PositionalTupleExpressionList  ']'
 		public Group getGroup_1_3_0() { return cGroup_1_3_0; }
 		
 		//kind=ValueIndexExpressionKind
@@ -19850,7 +23594,8 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_1_3_0_2() { return cRightSquareBracketKeyword_1_3_0_2; }
 		
-		//kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')'
+		//kind=ValueParameterExpressionKind
+		//               arg=MixTupleExpressionList  ')'
 		public Group getGroup_1_3_1() { return cGroup_1_3_1; }
 		
 		//kind=ValueParameterExpressionKind
@@ -19868,22 +23613,40 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_1_3_1_2() { return cRightParenthesisKeyword_1_3_1_2; }
 		
-		//({fmlExpr::ValueElementSpecification.parent=current} '->' //kind=ValueArrowFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?
-		//({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?)*)?
+		//// '->' element
+		//( { fmlExpr::ValueElementSpecification.parent=current }
+		//    '->' //kind=ValueArrowFieldExpressionKind
+		//    element=[fmlCommon::NamedElement|ESIdentifier]
+		//    // '[' index ',' ... ',' index ']'
+		//    ( kind=ValueIndexExpressionKind
+		//        arg=PositionalTupleExpressionList  ']'
+		//    // '(' parameter ',' ... ',' parameter ')'
+		//    | kind=ValueParameterExpressionKind
+		//        arg=MixTupleExpressionList  ')'
+		//    )?
+		//    // '.' element
+		//    ( { fmlExpr::ValueElementSpecification.parent=current }
+		//         '.' //kind=ValueDotFieldExpressionKind
+		//        element=[fmlCommon::NamedElement|ESIdentifier]
+		//        // '[' index ',' ... ',' index ']'
+		//        ( kind=ValueIndexExpressionKind
+		//            arg=PositionalTupleExpressionList  ']'
+		//        // '(' parameter ',' ... ',' parameter ')'
+		//        | kind=ValueParameterExpressionKind
+		//            arg=MixTupleExpressionList  ')'
+		//        )?
+		//    )*
+		//)?
 		public Group getGroup_2() { return cGroup_2; }
 		
-		//{fmlExpr::ValueElementSpecification.parent=current}
+		//{ fmlExpr::ValueElementSpecification.parent=current }
 		public Action getValueElementSpecificationParentAction_2_0() { return cValueElementSpecificationParentAction_2_0; }
 		
 		//'->'
 		public Keyword getHyphenMinusGreaterThanSignKeyword_2_1() { return cHyphenMinusGreaterThanSignKeyword_2_1; }
 		
 		////kind=ValueArrowFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier]
+		//           element=[fmlCommon::NamedElement|ESIdentifier]
 		public Assignment getElementAssignment_2_2() { return cElementAssignment_2_2; }
 		
 		//[fmlCommon::NamedElement|ESIdentifier]
@@ -19892,11 +23655,17 @@
 		//ESIdentifier
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_2_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_2_2_0_1; }
 		
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?
+		//// '[' index ',' ... ',' index ']'
+		//( kind=ValueIndexExpressionKind
+		//    arg=PositionalTupleExpressionList  ']'
+		//// '(' parameter ',' ... ',' parameter ')'
+		//| kind=ValueParameterExpressionKind
+		//    arg=MixTupleExpressionList  ')'
+		//)?
 		public Alternatives getAlternatives_2_3() { return cAlternatives_2_3; }
 		
-		//kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']'
+		//kind=ValueIndexExpressionKind
+		//               arg=PositionalTupleExpressionList  ']'
 		public Group getGroup_2_3_0() { return cGroup_2_3_0; }
 		
 		//kind=ValueIndexExpressionKind
@@ -19914,7 +23683,8 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_2_3_0_2() { return cRightSquareBracketKeyword_2_3_0_2; }
 		
-		//kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')'
+		//kind=ValueParameterExpressionKind
+		//               arg=MixTupleExpressionList  ')'
 		public Group getGroup_2_3_1() { return cGroup_2_3_1; }
 		
 		//kind=ValueParameterExpressionKind
@@ -19932,19 +23702,28 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_2_3_1_2() { return cRightParenthesisKeyword_2_3_1_2; }
 		
-		//({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?)*
+		//// '.' element
+		//( { fmlExpr::ValueElementSpecification.parent=current }
+		//     '.' //kind=ValueDotFieldExpressionKind
+		//    element=[fmlCommon::NamedElement|ESIdentifier]
+		//    // '[' index ',' ... ',' index ']'
+		//    ( kind=ValueIndexExpressionKind
+		//        arg=PositionalTupleExpressionList  ']'
+		//    // '(' parameter ',' ... ',' parameter ')'
+		//    | kind=ValueParameterExpressionKind
+		//        arg=MixTupleExpressionList  ')'
+		//    )?
+		//)*
 		public Group getGroup_2_4() { return cGroup_2_4; }
 		
-		//{fmlExpr::ValueElementSpecification.parent=current}
+		//{ fmlExpr::ValueElementSpecification.parent=current }
 		public Action getValueElementSpecificationParentAction_2_4_0() { return cValueElementSpecificationParentAction_2_4_0; }
 		
 		//'.'
 		public Keyword getFullStopKeyword_2_4_1() { return cFullStopKeyword_2_4_1; }
 		
 		////kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier]
+		//               element=[fmlCommon::NamedElement|ESIdentifier]
 		public Assignment getElementAssignment_2_4_2() { return cElementAssignment_2_4_2; }
 		
 		//[fmlCommon::NamedElement|ESIdentifier]
@@ -19953,11 +23732,17 @@
 		//ESIdentifier
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_2_4_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_2_4_2_0_1; }
 		
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?
+		//// '[' index ',' ... ',' index ']'
+		//( kind=ValueIndexExpressionKind
+		//    arg=PositionalTupleExpressionList  ']'
+		//// '(' parameter ',' ... ',' parameter ')'
+		//| kind=ValueParameterExpressionKind
+		//    arg=MixTupleExpressionList  ')'
+		//)?
 		public Alternatives getAlternatives_2_4_3() { return cAlternatives_2_4_3; }
 		
-		//kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']'
+		//kind=ValueIndexExpressionKind
+		//                   arg=PositionalTupleExpressionList  ']'
 		public Group getGroup_2_4_3_0() { return cGroup_2_4_3_0; }
 		
 		//kind=ValueIndexExpressionKind
@@ -19975,7 +23760,8 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_2_4_3_0_2() { return cRightSquareBracketKeyword_2_4_3_0_2; }
 		
-		//kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')'
+		//kind=ValueParameterExpressionKind
+		//                   arg=MixTupleExpressionList  ')'
 		public Group getGroup_2_4_3_1() { return cGroup_2_4_3_1; }
 		
 		//kind=ValueParameterExpressionKind
@@ -20004,16 +23790,19 @@
 		private final RuleCall cInvokeExpressionDeprecatedParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		private final RuleCall cDynamicInstantiationExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		
-		//BaseExpression fmlExpr::Expression:
-		//	LiteralReferenceableExpression
-		//	| '(' Expression ')'
-		//	| InvokeExpressionDeprecated
-		//	| DynamicInstantiationExpression
-		//	//	| NamedExpression
-		//;
+		//BaseExpression returns fmlExpr::Expression
+		//    : LiteralReferenceableExpression
+		//    | '(' Expression ')'
+		//    | InvokeExpressionDeprecated
+		//    | DynamicInstantiationExpression
+		////    | NamedExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralReferenceableExpression | '(' Expression ')' | InvokeExpressionDeprecated | DynamicInstantiationExpression
+		//LiteralReferenceableExpression
+		//   | '(' Expression ')'
+		//   | InvokeExpressionDeprecated
+		//   | DynamicInstantiationExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralReferenceableExpression
@@ -20045,11 +23834,14 @@
 		private final RuleCall cInvokableValueSelectionExpressionParserRuleCall_1_0 = (RuleCall)cInvokableAssignment_1.eContents().get(0);
 		
 		//// Behavior Invoke Expression
-		//InvokeExpression fmlExpr::InvokeExpression:
-		//	{fmlExpr::InvokeExpression} invokable=ValueSelectionExpression;
+		//InvokeExpression returns fmlExpr::InvokeExpression
+		//    : {fmlExpr::InvokeExpression}
+		//        invokable=ValueSelectionExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::InvokeExpression} invokable=ValueSelectionExpression
+		//{fmlExpr::InvokeExpression}
+		//       invokable=ValueSelectionExpression
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::InvokeExpression}
@@ -20074,12 +23866,14 @@
 		private final RuleCall cArgsExpressionParserRuleCall_4_0 = (RuleCall)cArgsAssignment_4.eContents().get(0);
 		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
-		//InvokeExpressionDeprecated fmlExpr::InvokeExpression:
-		//	{fmlExpr::InvokeExpression}
-		//	'(:' args+=Expression invokable=LiteralReferenceElement args+=Expression* ')';
+		//InvokeExpressionDeprecated returns fmlExpr::InvokeExpression
+		//    : {fmlExpr::InvokeExpression}
+		//        '(:' args+=Expression invokable=LiteralReferenceElement ( args+=Expression )* ')'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::InvokeExpression} '(:' args+=Expression invokable=LiteralReferenceElement args+=Expression* ')'
+		//{fmlExpr::InvokeExpression}
+		//       '(:' args+=Expression invokable=LiteralReferenceElement ( args+=Expression )* ')'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::InvokeExpression}
@@ -20100,7 +23894,7 @@
 		//LiteralReferenceElement
 		public RuleCall getInvokableLiteralReferenceElementParserRuleCall_3_0() { return cInvokableLiteralReferenceElementParserRuleCall_3_0; }
 		
-		//args+=Expression*
+		//( args+=Expression )*
 		public Assignment getArgsAssignment_4() { return cArgsAssignment_4; }
 		
 		//Expression
@@ -20117,12 +23911,14 @@
 		private final Assignment cInstanceAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cInstanceInstanceSpecificationParserRuleCall_2_0 = (RuleCall)cInstanceAssignment_2.eContents().get(0);
 		
-		//DynamicInstantiationExpression fmlExpr::InstantiationExpression:
-		//	{fmlExpr::InstantiationExpression}
-		//	'new' instance=InstanceSpecification;
+		//DynamicInstantiationExpression returns fmlExpr::InstantiationExpression
+		//    : {fmlExpr::InstantiationExpression}
+		//        'new' instance=InstanceSpecification
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::InstantiationExpression} 'new' instance=InstanceSpecification
+		//{fmlExpr::InstantiationExpression}
+		//       'new' instance=InstanceSpecification
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::InstantiationExpression}
@@ -20162,13 +23958,20 @@
 		private final Keyword cSemicolonKeyword_3_1_1 = (Keyword)cGroup_3_1.eContents().get(1);
 		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
 		
-		//InstanceSpecification fmlInfra::InstanceMachine:
-		//	{fmlInfra::InstanceMachine} model=[fmlInfra::Machine|ESIdentifier] ('(' (slot+=SlotParameter (','
-		//	slot+=SlotParameter)*)? ')')? ('{' (slot+=SlotProperty ';')* '}')?;
+		//InstanceSpecification returns fmlInfra::InstanceMachine
+		//    : {fmlInfra::InstanceMachine}
+		//        model=[fmlInfra::Machine|ESIdentifier]
+		////        ( '(' arg=MixTupleExpressionList ')'
+		//        ( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
+		//        ( '{' ( slot+=SlotProperty ';' )*  '}' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlInfra::InstanceMachine} model=[fmlInfra::Machine|ESIdentifier] ('(' (slot+=SlotParameter (','
-		//slot+=SlotParameter)*)? ')')? ('{' (slot+=SlotProperty ';')* '}')?
+		// {fmlInfra::InstanceMachine}
+		//        model=[fmlInfra::Machine|ESIdentifier]
+		////        ( '(' arg=MixTupleExpressionList ')'
+		//        ( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
+		//        ( '{' ( slot+=SlotProperty ';' )*  '}' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlInfra::InstanceMachine}
@@ -20183,13 +23986,14 @@
 		//ESIdentifier
 		public RuleCall getModelMachineESIdentifierParserRuleCall_1_0_1() { return cModelMachineESIdentifierParserRuleCall_1_0_1; }
 		
-		//('(' (slot+=SlotParameter (',' slot+=SlotParameter)*)? ')')?
+		////        ( '(' arg=MixTupleExpressionList ')'
+		//        ( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'('
 		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
 		
-		//(slot+=SlotParameter (',' slot+=SlotParameter)*)?
+		//( slot+=SlotParameter ( ',' slot+=SlotParameter )* )?
 		public Group getGroup_2_1() { return cGroup_2_1; }
 		
 		//slot+=SlotParameter
@@ -20198,7 +24002,7 @@
 		//SlotParameter
 		public RuleCall getSlotSlotParameterParserRuleCall_2_1_0_0() { return cSlotSlotParameterParserRuleCall_2_1_0_0; }
 		
-		//(',' slot+=SlotParameter)*
+		//( ',' slot+=SlotParameter )*
 		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
 		
 		//','
@@ -20213,13 +24017,13 @@
 		//')'
 		public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }
 		
-		//('{' (slot+=SlotProperty ';')* '}')?
+		//( '{' ( slot+=SlotProperty ';' )*  '}' )?
 		public Group getGroup_3() { return cGroup_3; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
 		
-		//(slot+=SlotProperty ';')*
+		//( slot+=SlotProperty ';' )*
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//slot+=SlotProperty
@@ -20242,11 +24046,12 @@
 		private final Keyword cRightParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
 		
 		//// Tuple Expression
-		//TupleParameterExpression fmlExpr::TupleExpression:
-		//	'(' MixTupleExpressionList ')';
+		//TupleParameterExpression returns fmlExpr::TupleExpression
+		//    : '('  MixTupleExpressionList  ')'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'(' MixTupleExpressionList ')'
+		//'('  MixTupleExpressionList  ')'
 		public Group getGroup() { return cGroup; }
 		
 		//'('
@@ -20273,20 +24078,25 @@
 		private final RuleCall cValueExpressionParserRuleCall_2_1_0_0 = (RuleCall)cValueAlternatives_2_1_0.eContents().get(0);
 		private final RuleCall cValueNamedExpressionParserRuleCall_2_1_0_1 = (RuleCall)cValueAlternatives_2_1_0.eContents().get(1);
 		
-		//MixTupleExpressionList fmlExpr::MixTupleExpression:
-		//	{fmlExpr::MixTupleExpression} value+=(Expression | NamedExpression) (',' value+=(Expression | NamedExpression))*;
+		//MixTupleExpressionList returns fmlExpr::MixTupleExpression
+		//    : {fmlExpr::MixTupleExpression}
+		//        value+=( Expression | NamedExpression )
+		//        ( ',' value+=( Expression | NamedExpression ) )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::MixTupleExpression} value+=(Expression | NamedExpression) (',' value+=(Expression | NamedExpression))*
+		//{fmlExpr::MixTupleExpression}
+		//       value+=( Expression | NamedExpression )
+		//       ( ',' value+=( Expression | NamedExpression ) )*
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::MixTupleExpression}
 		public Action getMixTupleExpressionAction_0() { return cMixTupleExpressionAction_0; }
 		
-		//value+=(Expression | NamedExpression)
+		//value+=( Expression | NamedExpression )
 		public Assignment getValueAssignment_1() { return cValueAssignment_1; }
 		
-		//(Expression | NamedExpression)
+		//( Expression | NamedExpression )
 		public Alternatives getValueAlternatives_1_0() { return cValueAlternatives_1_0; }
 		
 		//Expression
@@ -20295,16 +24105,16 @@
 		//NamedExpression
 		public RuleCall getValueNamedExpressionParserRuleCall_1_0_1() { return cValueNamedExpressionParserRuleCall_1_0_1; }
 		
-		//(',' value+=(Expression | NamedExpression))*
+		//( ',' value+=( Expression | NamedExpression ) )*
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//','
 		public Keyword getCommaKeyword_2_0() { return cCommaKeyword_2_0; }
 		
-		//value+=(Expression | NamedExpression)
+		//value+=( Expression | NamedExpression )
 		public Assignment getValueAssignment_2_1() { return cValueAssignment_2_1; }
 		
-		//(Expression | NamedExpression)
+		//( Expression | NamedExpression )
 		public Alternatives getValueAlternatives_2_1_0() { return cValueAlternatives_2_1_0; }
 		
 		//Expression
@@ -20325,32 +24135,33 @@
 		
 		////// At least one NamedExpression
 		////FormalMixTupleExpressionList returns fmlExpr::MixTupleExpression
-		////	: {fmlExpr::MixTupleExpression}
-		////		( value+=Expression  ( ',' value+=Expression )*
-		////			( ',' value+=NamedExpression )
-		////		| value+=NamedExpression
-		////		)
-		////		( ',' value+=( Expression | NamedExpression ) )*
-		////	;
+		////    : {fmlExpr::MixTupleExpression}
+		////        ( value+=Expression  ( ',' value+=Expression )*
+		////            ( ',' value+=NamedExpression )
+		////        | value+=NamedExpression
+		////        )
+		////        ( ',' value+=( Expression | NamedExpression ) )*
+		////    ;
 		////
 		////// NamedExpression only at the end
 		////EndingMixTupleExpressionList returns fmlExpr::MixTupleExpression
-		////	: {fmlExpr::MixTupleExpression}
-		////		( value+=Expression  ( ',' value+=Expression )*
-		////		| value+=NamedExpression
-		////		)
-		////		( ',' value+=NamedExpression )*
-		////	;
+		////    : {fmlExpr::MixTupleExpression}
+		////        ( value+=Expression  ( ',' value+=Expression )*
+		////        | value+=NamedExpression
+		////        )
+		////        ( ',' value+=NamedExpression )*
+		////    ;
 		////
 		////
 		////NamedTupleExpressionList returns fmlExpr::NamedTupleExpression
-		////	: value+=NamedExpression ( ',' value+=NamedExpression )*
-		////	;
-		//PositionalTupleExpressionList fmlExpr::PositionalTupleExpression:
-		//	value+=Expression (',' value+=Expression)*;
+		////    : value+=NamedExpression ( ',' value+=NamedExpression )*
+		////    ;
+		//PositionalTupleExpressionList returns fmlExpr::PositionalTupleExpression
+		//    : value+=Expression ( ',' value+=Expression )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//value+=Expression (',' value+=Expression)*
+		//value+=Expression ( ',' value+=Expression )*
 		public Group getGroup() { return cGroup; }
 		
 		//value+=Expression
@@ -20359,7 +24170,7 @@
 		//Expression
 		public RuleCall getValueExpressionParserRuleCall_0_0() { return cValueExpressionParserRuleCall_0_0; }
 		
-		//(',' value+=Expression)*
+		//( ',' value+=Expression )*
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//','
@@ -20383,22 +24194,26 @@
 		private final Assignment cExpressionAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cExpressionExpressionParserRuleCall_2_0 = (RuleCall)cExpressionAssignment_2.eContents().get(0);
 		
-		//NamedExpression fmlExpr::NamedExpression:
-		//	name=XLIA_ID (':' | '=>' | '<-') expression=Expression;
+		//NamedExpression returns fmlExpr::NamedExpression
+		//    : //target=[fmlCommon::NamedElement|ESIdentifier]
+		//        name=XLIA_ID
+		//        ( ':' | '=>' | '<-' ) expression=Expression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
 		////target=[fmlCommon::NamedElement|ESIdentifier]
-		//name=XLIA_ID (':' | '=>' | '<-') expression=Expression
+		//       name=XLIA_ID
+		//       ( ':' | '=>' | '<-' ) expression=Expression
 		public Group getGroup() { return cGroup; }
 		
 		////target=[fmlCommon::NamedElement|ESIdentifier]
-		//name=XLIA_ID
+		//       name=XLIA_ID
 		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
 		
 		//XLIA_ID
 		public RuleCall getNameXLIA_IDTerminalRuleCall_0_0() { return cNameXLIA_IDTerminalRuleCall_0_0; }
 		
-		//(':' | '=>' | '<-')
+		//( ':' | '=>' | '<-' )
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//':'
@@ -20423,18 +24238,20 @@
 		private final RuleCall cLiteralReferenceableExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
 		////NotificationComExpression returns fmlExpr::Expression
-		////	: { fmlExpr::Expression }
-		////		symbol=( 'present' | 'absent' )  operand+=Expression
-		////	;
+		////    : { fmlExpr::Expression }
+		////        symbol=( 'present' | 'absent' )  operand+=Expression
+		////    ;
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralExpression fmlExpr::LiteralExpression:
-		//	LiteralTerminalExpression
-		//	| LiteralReferenceableExpression;
+		//LiteralExpression returns fmlExpr::LiteralExpression
+		//    : LiteralTerminalExpression
+		//    | LiteralReferenceableExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralTerminalExpression | LiteralReferenceableExpression
+		//LiteralTerminalExpression
+		//   | LiteralReferenceableExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralTerminalExpression
@@ -20449,12 +24266,14 @@
 		private final RuleCall cLiteralCollectionExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cLiteralReferenceExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//LiteralReferenceableExpression fmlExpr::LiteralExpression:
-		//	LiteralCollectionExpression
-		//	| LiteralReferenceExpression;
+		//LiteralReferenceableExpression returns fmlExpr::LiteralExpression
+		//    : LiteralCollectionExpression
+		//    | LiteralReferenceExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralCollectionExpression | LiteralReferenceExpression
+		//LiteralCollectionExpression
+		//   | LiteralReferenceExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralCollectionExpression
@@ -20478,23 +24297,32 @@
 		private final RuleCall cLiteralNoneValueExpressionParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
 		private final RuleCall cLiteralAnyOrNoneValueExpressionParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
 		
-		//LiteralTerminalExpression fmlExpr::LiteralExpression:
-		//	LiteralBooleanExpression
-		//	| LiteralIntegerExpression
-		//	| LiteralRationalExpression
-		//	| LiteralFloatExpression
-		//	| LiteralCharacterExpression
-		//	| LiteralStringExpression
-		//	| LiteralNullExpression
-		//	| LiteralAnyValueExpression
-		//	| LiteralOptionalValueExpression
-		//	| LiteralNoneValueExpression
-		//	| LiteralAnyOrNoneValueExpression;
+		//LiteralTerminalExpression returns fmlExpr::LiteralExpression
+		//    : LiteralBooleanExpression
+		//    | LiteralIntegerExpression
+		//    | LiteralRationalExpression
+		//    | LiteralFloatExpression
+		//    | LiteralCharacterExpression
+		//    | LiteralStringExpression
+		//    | LiteralNullExpression
+		//    | LiteralAnyValueExpression
+		//    | LiteralOptionalValueExpression
+		//    | LiteralNoneValueExpression
+		//    | LiteralAnyOrNoneValueExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralBooleanExpression | LiteralIntegerExpression | LiteralRationalExpression | LiteralFloatExpression |
-		//LiteralCharacterExpression | LiteralStringExpression | LiteralNullExpression | LiteralAnyValueExpression |
-		//LiteralOptionalValueExpression | LiteralNoneValueExpression | LiteralAnyOrNoneValueExpression
+		//LiteralBooleanExpression
+		//   | LiteralIntegerExpression
+		//   | LiteralRationalExpression
+		//   | LiteralFloatExpression
+		//   | LiteralCharacterExpression
+		//   | LiteralStringExpression
+		//   | LiteralNullExpression
+		//   | LiteralAnyValueExpression
+		//   | LiteralOptionalValueExpression
+		//   | LiteralNoneValueExpression
+		//   | LiteralAnyOrNoneValueExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralBooleanExpression
@@ -20540,11 +24368,14 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Boolean / Numeric Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralBooleanExpression fmlExpr::LiteralBooleanExpression:
-		//	{fmlExpr::LiteralBooleanExpression} value=EBoolean;
+		//LiteralBooleanExpression returns fmlExpr::LiteralBooleanExpression
+		//    : {fmlExpr::LiteralBooleanExpression}
+		//        value=EBoolean
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralBooleanExpression} value=EBoolean
+		//{fmlExpr::LiteralBooleanExpression}
+		//       value=EBoolean
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralBooleanExpression}
@@ -20563,11 +24394,14 @@
 		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cValueEIntegerParserRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
 		
-		//LiteralIntegerExpression fmlExpr::LiteralIntegerExpression:
-		//	{fmlExpr::LiteralIntegerExpression} value=EInteger;
+		//LiteralIntegerExpression returns fmlExpr::LiteralIntegerExpression
+		//    : {fmlExpr::LiteralIntegerExpression}
+		//        value=EInteger
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralIntegerExpression} value=EInteger
+		//{fmlExpr::LiteralIntegerExpression}
+		//       value=EInteger
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralIntegerExpression}
@@ -20589,11 +24423,14 @@
 		private final Assignment cDenominatorAssignment_3 = (Assignment)cGroup.eContents().get(3);
 		private final RuleCall cDenominatorEIntegerParserRuleCall_3_0 = (RuleCall)cDenominatorAssignment_3.eContents().get(0);
 		
-		//LiteralRationalExpression fmlExpr::LiteralRationalExpression:
-		//	{fmlExpr::LiteralRationalExpression} numerator=EInteger '/' denominator=EInteger;
+		//LiteralRationalExpression returns fmlExpr::LiteralRationalExpression
+		//    : {fmlExpr::LiteralRationalExpression}
+		//        numerator=EInteger '/' denominator=EInteger
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralRationalExpression} numerator=EInteger '/' denominator=EInteger
+		//{fmlExpr::LiteralRationalExpression}
+		//       numerator=EInteger '/' denominator=EInteger
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralRationalExpression}
@@ -20621,11 +24458,14 @@
 		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cValueEDoubleParserRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
 		
-		//LiteralFloatExpression fmlExpr::LiteralFloatExpression:
-		//	{fmlExpr::LiteralFloatExpression} value=EDouble;
+		//LiteralFloatExpression returns fmlExpr::LiteralFloatExpression
+		//    : {fmlExpr::LiteralFloatExpression}
+		//        value=EDouble
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralFloatExpression} value=EDouble
+		//{fmlExpr::LiteralFloatExpression}
+		//       value=EDouble
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralFloatExpression}
@@ -20647,11 +24487,14 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Character / String Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralCharacterExpression fmlExpr::LiteralCharacterExpression:
-		//	{fmlExpr::LiteralCharacterExpression} value=ECharacter;
+		//LiteralCharacterExpression returns fmlExpr::LiteralCharacterExpression
+		//    : {fmlExpr::LiteralCharacterExpression}
+		//        value=ECharacter
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralCharacterExpression} value=ECharacter
+		//{fmlExpr::LiteralCharacterExpression}
+		//       value=ECharacter
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralCharacterExpression}
@@ -20670,11 +24513,14 @@
 		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cValueEStringParserRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
 		
-		//LiteralStringExpression fmlExpr::LiteralStringExpression:
-		//	{fmlExpr::LiteralStringExpression} value=EString;
+		//LiteralStringExpression returns fmlExpr::LiteralStringExpression
+		//    : {fmlExpr::LiteralStringExpression}
+		//        value=EString
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralStringExpression} value=EString
+		//{fmlExpr::LiteralStringExpression}
+		//       value=EString
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralStringExpression}
@@ -20700,12 +24546,16 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Null Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralNullExpression fmlExpr::LiteralNullExpression:
-		//	{fmlExpr::LiteralNullExpression}
-		//	'$null' ('<' type=NullPrimitiveInstanceType '>')?;
+		//LiteralNullExpression returns fmlExpr::LiteralNullExpression
+		//    : {fmlExpr::LiteralNullExpression}
+		//        '$null' //type=AnyNullPrimitiveInstanceType
+		//        ( '<'  type=NullPrimitiveInstanceType  '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralNullExpression} '$null' ('<' type=NullPrimitiveInstanceType '>')?
+		//{fmlExpr::LiteralNullExpression}
+		//       '$null' //type=AnyNullPrimitiveInstanceType
+		//       ( '<'  type=NullPrimitiveInstanceType  '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralNullExpression}
@@ -20714,7 +24564,8 @@
 		//'$null'
 		public Keyword getNullKeyword_1() { return cNullKeyword_1; }
 		
-		//('<' type=NullPrimitiveInstanceType '>')?
+		////type=AnyNullPrimitiveInstanceType
+		//       ( '<'  type=NullPrimitiveInstanceType  '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -20736,14 +24587,17 @@
 		private final Assignment cExpectedAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cExpectedAnyPrimitiveInstanceKindEnumRuleCall_1_0 = (RuleCall)cExpectedAssignment_1.eContents().get(0);
 		
-		//AnyNullPrimitiveInstanceType fmlType::PrimitiveInstanceType:
-		//	{fmlType::PrimitiveInstanceType} expected=AnyPrimitiveInstanceKind;
+		//AnyNullPrimitiveInstanceType returns fmlType::PrimitiveInstanceType
+		//    : { fmlType::PrimitiveInstanceType }
+		//        expected=AnyPrimitiveInstanceKind
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveInstanceType} expected=AnyPrimitiveInstanceKind
+		//{ fmlType::PrimitiveInstanceType }
+		//       expected=AnyPrimitiveInstanceKind
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlType::PrimitiveInstanceType}
+		//{ fmlType::PrimitiveInstanceType }
 		public Action getPrimitiveInstanceTypeAction_0() { return cPrimitiveInstanceTypeAction_0; }
 		
 		//expected=AnyPrimitiveInstanceKind
@@ -20765,19 +24619,25 @@
 		private final CrossReference cModelNamedElementCrossReference_1_1_0 = (CrossReference)cModelAssignment_1_1.eContents().get(0);
 		private final RuleCall cModelNamedElementESIdentifierParserRuleCall_1_1_0_1 = (RuleCall)cModelNamedElementCrossReference_1_1_0.eContents().get(1);
 		
-		//NullPrimitiveInstanceType fmlType::PrimitiveInstanceType:
-		//	{fmlType::PrimitiveInstanceType} expected=PrimitiveInstanceKind
-		//	| {fmlType::PrimitiveInstanceType} model=[fmlCommon::NamedElement|ESIdentifier];
+		//NullPrimitiveInstanceType returns fmlType::PrimitiveInstanceType
+		//    : { fmlType::PrimitiveInstanceType }
+		//        expected=PrimitiveInstanceKind
+		//    | { fmlType::PrimitiveInstanceType }
+		//        model=[fmlCommon::NamedElement|ESIdentifier]
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlType::PrimitiveInstanceType} expected=PrimitiveInstanceKind | {fmlType::PrimitiveInstanceType}
-		//model=[fmlCommon::NamedElement|ESIdentifier]
+		//{ fmlType::PrimitiveInstanceType }
+		//       expected=PrimitiveInstanceKind
+		//   | { fmlType::PrimitiveInstanceType }
+		//       model=[fmlCommon::NamedElement|ESIdentifier]
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//{fmlType::PrimitiveInstanceType} expected=PrimitiveInstanceKind
+		//{ fmlType::PrimitiveInstanceType }
+		//       expected=PrimitiveInstanceKind
 		public Group getGroup_0() { return cGroup_0; }
 		
-		//{fmlType::PrimitiveInstanceType}
+		//{ fmlType::PrimitiveInstanceType }
 		public Action getPrimitiveInstanceTypeAction_0_0() { return cPrimitiveInstanceTypeAction_0_0; }
 		
 		//expected=PrimitiveInstanceKind
@@ -20786,10 +24646,11 @@
 		//PrimitiveInstanceKind
 		public RuleCall getExpectedPrimitiveInstanceKindEnumRuleCall_0_1_0() { return cExpectedPrimitiveInstanceKindEnumRuleCall_0_1_0; }
 		
-		//{fmlType::PrimitiveInstanceType} model=[fmlCommon::NamedElement|ESIdentifier]
+		//{ fmlType::PrimitiveInstanceType }
+		//       model=[fmlCommon::NamedElement|ESIdentifier]
 		public Group getGroup_1() { return cGroup_1; }
 		
-		//{fmlType::PrimitiveInstanceType}
+		//{ fmlType::PrimitiveInstanceType }
 		public Action getPrimitiveInstanceTypeAction_1_0() { return cPrimitiveInstanceTypeAction_1_0; }
 		
 		//model=[fmlCommon::NamedElement|ESIdentifier]
@@ -20826,23 +24687,38 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Predefined Constant Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//AnyDataTypeReference fmlType::DataType:
-		//	SimpleDataType ({fmlType::DataTypeReference.support=current}
-		//	'[' multiplicity=DataTypeMultiplicity ']')?
-		//	| {fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?;
+		//AnyDataTypeReference returns fmlType::DataType
+		//    : SimpleDataType
+		//        ( {fmlType::DataTypeReference.support=current}
+		//            '[' multiplicity=DataTypeMultiplicity ']'
+		//        )?
+		//    | {fmlType::DataTypeReference}
+		//        typeref=[fmlType::DataType|ESUfid]
+		//        ( '[' multiplicity=DataTypeMultiplicity ']' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//SimpleDataType ({fmlType::DataTypeReference.support=current} '[' multiplicity=DataTypeMultiplicity ']')? |
-		//{fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?
+		//SimpleDataType
+		//       ( {fmlType::DataTypeReference.support=current}
+		//           '[' multiplicity=DataTypeMultiplicity ']'
+		//       )?
+		//   | {fmlType::DataTypeReference}
+		//       typeref=[fmlType::DataType|ESUfid]
+		//       ( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//SimpleDataType ({fmlType::DataTypeReference.support=current} '[' multiplicity=DataTypeMultiplicity ']')?
+		//SimpleDataType
+		//       ( {fmlType::DataTypeReference.support=current}
+		//           '[' multiplicity=DataTypeMultiplicity ']'
+		//       )?
 		public Group getGroup_0() { return cGroup_0; }
 		
 		//SimpleDataType
 		public RuleCall getSimpleDataTypeParserRuleCall_0_0() { return cSimpleDataTypeParserRuleCall_0_0; }
 		
-		//({fmlType::DataTypeReference.support=current} '[' multiplicity=DataTypeMultiplicity ']')?
+		//( {fmlType::DataTypeReference.support=current}
+		//    '[' multiplicity=DataTypeMultiplicity ']'
+		//)?
 		public Group getGroup_0_1() { return cGroup_0_1; }
 		
 		//{fmlType::DataTypeReference.support=current}
@@ -20860,7 +24736,9 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_0_1_3() { return cRightSquareBracketKeyword_0_1_3; }
 		
-		//{fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?
+		//{fmlType::DataTypeReference}
+		//       typeref=[fmlType::DataType|ESUfid]
+		//       ( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//{fmlType::DataTypeReference}
@@ -20875,7 +24753,7 @@
 		//ESUfid
 		public RuleCall getTyperefDataTypeESUfidParserRuleCall_1_1_0_1() { return cTyperefDataTypeESUfidParserRuleCall_1_1_0_1; }
 		
-		//('[' multiplicity=DataTypeMultiplicity ']')?
+		//( '[' multiplicity=DataTypeMultiplicity ']' )?
 		public Group getGroup_1_2() { return cGroup_1_2; }
 		
 		//'['
@@ -20901,12 +24779,16 @@
 		private final RuleCall cTypeAnyDataTypeReferenceParserRuleCall_2_1_0 = (RuleCall)cTypeAssignment_2_1.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
 		
-		//LiteralAnyValueExpression fmlExpr::LiteralAnyValueExpression:
-		//	{fmlExpr::LiteralAnyValueExpression}
-		//	'$any' ('<' type=AnyDataTypeReference '>')?;
+		//LiteralAnyValueExpression returns fmlExpr::LiteralAnyValueExpression
+		//    : {fmlExpr::LiteralAnyValueExpression}
+		//        '$any'
+		//        ( '<'  type=AnyDataTypeReference  '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralAnyValueExpression} '$any' ('<' type=AnyDataTypeReference '>')?
+		//{fmlExpr::LiteralAnyValueExpression}
+		//       '$any'
+		//       ( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralAnyValueExpression}
@@ -20915,7 +24797,7 @@
 		//'$any'
 		public Keyword getAnyKeyword_1() { return cAnyKeyword_1; }
 		
-		//('<' type=AnyDataTypeReference '>')?
+		//( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -20941,12 +24823,16 @@
 		private final RuleCall cTypeAnyDataTypeReferenceParserRuleCall_2_1_0 = (RuleCall)cTypeAssignment_2_1.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
 		
-		//LiteralOptionalValueExpression fmlExpr::LiteralOptionalValueExpression:
-		//	{fmlExpr::LiteralOptionalValueExpression}
-		//	'$optional' ('<' type=AnyDataTypeReference '>')?;
+		//LiteralOptionalValueExpression returns fmlExpr::LiteralOptionalValueExpression
+		//    : {fmlExpr::LiteralOptionalValueExpression}
+		//        '$optional'
+		//        ( '<'  type=AnyDataTypeReference  '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralOptionalValueExpression} '$optional' ('<' type=AnyDataTypeReference '>')?
+		//{fmlExpr::LiteralOptionalValueExpression}
+		//       '$optional'
+		//       ( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralOptionalValueExpression}
@@ -20955,7 +24841,7 @@
 		//'$optional'
 		public Keyword getOptionalKeyword_1() { return cOptionalKeyword_1; }
 		
-		//('<' type=AnyDataTypeReference '>')?
+		//( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -20981,12 +24867,16 @@
 		private final RuleCall cTypeAnyDataTypeReferenceParserRuleCall_2_1_0 = (RuleCall)cTypeAssignment_2_1.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
 		
-		//LiteralNoneValueExpression fmlExpr::LiteralNoneValueExpression:
-		//	{fmlExpr::LiteralNoneValueExpression}
-		//	'$none' ('<' type=AnyDataTypeReference '>')?;
+		//LiteralNoneValueExpression returns fmlExpr::LiteralNoneValueExpression
+		//    : {fmlExpr::LiteralNoneValueExpression}
+		//        '$none'
+		//        ( '<'  type=AnyDataTypeReference  '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralNoneValueExpression} '$none' ('<' type=AnyDataTypeReference '>')?
+		//{fmlExpr::LiteralNoneValueExpression}
+		//       '$none'
+		//       ( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralNoneValueExpression}
@@ -20995,7 +24885,7 @@
 		//'$none'
 		public Keyword getNoneKeyword_1() { return cNoneKeyword_1; }
 		
-		//('<' type=AnyDataTypeReference '>')?
+		//( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -21021,12 +24911,16 @@
 		private final RuleCall cTypeAnyDataTypeReferenceParserRuleCall_2_1_0 = (RuleCall)cTypeAssignment_2_1.eContents().get(0);
 		private final Keyword cGreaterThanSignKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
 		
-		//LiteralAnyOrNoneValueExpression fmlExpr::LiteralAnyOrNoneValueExpression:
-		//	{fmlExpr::LiteralAnyOrNoneValueExpression}
-		//	'$any$none' ('<' type=AnyDataTypeReference '>')?;
+		//LiteralAnyOrNoneValueExpression returns fmlExpr::LiteralAnyOrNoneValueExpression
+		//    : {fmlExpr::LiteralAnyOrNoneValueExpression}
+		//        '$any$none'
+		//        ( '<'  type=AnyDataTypeReference  '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralAnyOrNoneValueExpression} '$any$none' ('<' type=AnyDataTypeReference '>')?
+		//{fmlExpr::LiteralAnyOrNoneValueExpression}
+		//       '$any$none'
+		//       ( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralAnyOrNoneValueExpression}
@@ -21035,7 +24929,7 @@
 		//'$any$none'
 		public Keyword getAnyNoneKeyword_1() { return cAnyNoneKeyword_1; }
 		
-		//('<' type=AnyDataTypeReference '>')?
+		//( '<'  type=AnyDataTypeReference  '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
@@ -21078,19 +24972,31 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Collection Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralCollectionExpression fmlExpr::LiteralCollectionExpression:
-		//	{fmlExpr::LiteralCollectionExpression} ('<' datatype=DataType '>')?
-		//	'{' ((value+=Expression | value+=NamedExpression) (',' (value+=Expression | value+=NamedExpression))*)? '}';
+		//LiteralCollectionExpression returns fmlExpr::LiteralCollectionExpression
+		//    : {fmlExpr::LiteralCollectionExpression}
+		////        ( 'new' datatype=DataType )?
+		//        ( '<' datatype=DataType '>')?
+		//        '{' (
+		//            ( value+=Expression | value+=NamedExpression )
+		//            ( ',' ( value+=Expression | value+=NamedExpression ) )*
+		//        )? '}'
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralCollectionExpression} ('<' datatype=DataType '>')? '{' ((value+=Expression | value+=NamedExpression)
-		//(',' (value+=Expression | value+=NamedExpression))*)? '}'
+		// {fmlExpr::LiteralCollectionExpression}
+		////        ( 'new' datatype=DataType )?
+		//        ( '<' datatype=DataType '>')?
+		//        '{' (
+		//            ( value+=Expression | value+=NamedExpression )
+		//            ( ',' ( value+=Expression | value+=NamedExpression ) )*
+		//        )? '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralCollectionExpression}
 		public Action getLiteralCollectionExpressionAction_0() { return cLiteralCollectionExpressionAction_0; }
 		
-		//('<' datatype=DataType '>')?
+		////        ( 'new' datatype=DataType )?
+		//        ( '<' datatype=DataType '>')?
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//'<'
@@ -21108,10 +25014,13 @@
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
 		
-		//((value+=Expression | value+=NamedExpression) (',' (value+=Expression | value+=NamedExpression))*)?
+		//(
+		//           ( value+=Expression | value+=NamedExpression )
+		//           ( ',' ( value+=Expression | value+=NamedExpression ) )*
+		//       )?
 		public Group getGroup_3() { return cGroup_3; }
 		
-		//(value+=Expression | value+=NamedExpression)
+		//( value+=Expression | value+=NamedExpression )
 		public Alternatives getAlternatives_3_0() { return cAlternatives_3_0; }
 		
 		//value+=Expression
@@ -21126,13 +25035,13 @@
 		//NamedExpression
 		public RuleCall getValueNamedExpressionParserRuleCall_3_0_1_0() { return cValueNamedExpressionParserRuleCall_3_0_1_0; }
 		
-		//(',' (value+=Expression | value+=NamedExpression))*
+		//( ',' ( value+=Expression | value+=NamedExpression ) )*
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//','
 		public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
 		
-		//(value+=Expression | value+=NamedExpression)
+		//( value+=Expression | value+=NamedExpression )
 		public Alternatives getAlternatives_3_1_1() { return cAlternatives_3_1_1; }
 		
 		//value+=Expression
@@ -21161,14 +25070,18 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Literal Reference Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralReferenceExpression fmlExpr::LiteralReferenceExpression:
-		//	LiteralReferenceElement
-		//	| LiteralReferenceVariableContext
-		//	| LiteralReferenceMachineContext
-		//	| LiteralEnvExpression;
+		//LiteralReferenceExpression returns fmlExpr::LiteralReferenceExpression
+		//    : LiteralReferenceElement
+		//    | LiteralReferenceVariableContext
+		//    | LiteralReferenceMachineContext
+		//    | LiteralEnvExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralReferenceElement | LiteralReferenceVariableContext | LiteralReferenceMachineContext | LiteralEnvExpression
+		//LiteralReferenceElement
+		//   | LiteralReferenceVariableContext
+		//   | LiteralReferenceMachineContext
+		//   | LiteralEnvExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralReferenceElement
@@ -21207,24 +25120,34 @@
 		private final RuleCall cArgMixTupleExpressionListParserRuleCall_3_1_1_0 = (RuleCall)cArgAssignment_3_1_1.eContents().get(0);
 		private final Keyword cRightParenthesisKeyword_3_1_2 = (Keyword)cGroup_3_1.eContents().get(2);
 		
-		//LiteralReferenceElement fmlExpr::LiteralReferenceElement:
-		//	{fmlExpr::LiteralReferenceElement} ('spec::' | '::')? element=[fmlCommon::NamedElement|ESIdentifier]
-		//	(kind=ValueIndexExpressionKind
-		//	arg=PositionalTupleExpressionList ']'
-		//	// '(' parameter ',' ... ',' parameter ')'
-		//	| kind=ValueParameterExpressionKind
-		//	arg=MixTupleExpressionList ')')?;
+		//LiteralReferenceElement returns fmlExpr::LiteralReferenceElement
+		//    : {fmlExpr::LiteralReferenceElement}
+		//        ( 'spec::' | '::' )?  element=[fmlCommon::NamedElement|ESIdentifier]
+		//        // '[' index ',' ... ',' index ']'
+		//        ( kind=ValueIndexExpressionKind
+		//            arg=PositionalTupleExpressionList  ']'
+		//        // '(' parameter ',' ... ',' parameter ')'
+		//        | kind=ValueParameterExpressionKind
+		//            arg=MixTupleExpressionList  ')'
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralReferenceElement} ('spec::' | '::')? element=[fmlCommon::NamedElement|ESIdentifier]
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?
+		//{fmlExpr::LiteralReferenceElement}
+		//       ( 'spec::' | '::' )?  element=[fmlCommon::NamedElement|ESIdentifier]
+		//       // '[' index ',' ... ',' index ']'
+		//       ( kind=ValueIndexExpressionKind
+		//           arg=PositionalTupleExpressionList  ']'
+		//       // '(' parameter ',' ... ',' parameter ')'
+		//       | kind=ValueParameterExpressionKind
+		//           arg=MixTupleExpressionList  ')'
+		//       )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralReferenceElement}
 		public Action getLiteralReferenceElementAction_0() { return cLiteralReferenceElementAction_0; }
 		
-		//('spec::' | '::')?
+		//( 'spec::' | '::' )?
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'spec::'
@@ -21242,11 +25165,17 @@
 		//ESIdentifier
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_2_0_1; }
 		
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' // '(' parameter ',' ... ',' parameter ')'
-		//| kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')')?
+		//// '[' index ',' ... ',' index ']'
+		//( kind=ValueIndexExpressionKind
+		//    arg=PositionalTupleExpressionList  ']'
+		//// '(' parameter ',' ... ',' parameter ')'
+		//| kind=ValueParameterExpressionKind
+		//    arg=MixTupleExpressionList  ')'
+		//)?
 		public Alternatives getAlternatives_3() { return cAlternatives_3; }
 		
-		//kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']'
+		//kind=ValueIndexExpressionKind
+		//           arg=PositionalTupleExpressionList  ']'
 		public Group getGroup_3_0() { return cGroup_3_0; }
 		
 		//kind=ValueIndexExpressionKind
@@ -21264,7 +25193,8 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_3_0_2() { return cRightSquareBracketKeyword_3_0_2; }
 		
-		//kind=ValueParameterExpressionKind arg=MixTupleExpressionList ')'
+		//kind=ValueParameterExpressionKind
+		//           arg=MixTupleExpressionList  ')'
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
 		//kind=ValueParameterExpressionKind
@@ -21293,17 +25223,20 @@
 		private final CrossReference cElementNamedElementCrossReference_2_0 = (CrossReference)cElementAssignment_2.eContents().get(0);
 		private final RuleCall cElementNamedElementESIdentifierParserRuleCall_2_0_1 = (RuleCall)cElementNamedElementCrossReference_2_0.eContents().get(1);
 		
-		//LiteralPureReferenceElement fmlExpr::LiteralReferenceElement:
-		//	{fmlExpr::LiteralReferenceElement} ('spec::' | '::')? element=[fmlCommon::NamedElement|ESIdentifier];
+		//LiteralPureReferenceElement returns fmlExpr::LiteralReferenceElement
+		//    : {fmlExpr::LiteralReferenceElement}
+		//        ( 'spec::' | '::' )?  element=[fmlCommon::NamedElement|ESIdentifier]
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralReferenceElement} ('spec::' | '::')? element=[fmlCommon::NamedElement|ESIdentifier]
+		//{fmlExpr::LiteralReferenceElement}
+		//       ( 'spec::' | '::' )?  element=[fmlCommon::NamedElement|ESIdentifier]
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralReferenceElement}
 		public Action getLiteralReferenceElementAction_0() { return cLiteralReferenceElementAction_0; }
 		
-		//('spec::' | '::')?
+		//( 'spec::' | '::' )?
 		public Alternatives getAlternatives_1() { return cAlternatives_1; }
 		
 		//'spec::'
@@ -21329,14 +25262,18 @@
 		private final RuleCall cLiteralTimeInitialExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		private final RuleCall cLiteralTimeDeltaInitialExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		
-		//LiteralReferenceVariableContext fmlExpr::LiteralReferenceExpression:
-		//	LiteralTimeExpression
-		//	| LiteralTimeDeltaExpression
-		//	| LiteralTimeInitialExpression
-		//	| LiteralTimeDeltaInitialExpression;
+		//LiteralReferenceVariableContext returns fmlExpr::LiteralReferenceExpression
+		//    : LiteralTimeExpression
+		//    | LiteralTimeDeltaExpression
+		//    | LiteralTimeInitialExpression
+		//    | LiteralTimeDeltaInitialExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralTimeExpression | LiteralTimeDeltaExpression | LiteralTimeInitialExpression | LiteralTimeDeltaInitialExpression
+		//LiteralTimeExpression
+		//   | LiteralTimeDeltaExpression
+		//   | LiteralTimeInitialExpression
+		//   | LiteralTimeDeltaInitialExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralTimeExpression
@@ -21357,17 +25294,18 @@
 		private final Action cLiteralTimeExpressionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cTimeKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//LiteralTimeExpression fmlExpr::LiteralTimeExpression:
-		//	{fmlExpr::LiteralTimeExpression} '$time';
+		//LiteralTimeExpression returns fmlExpr::LiteralTimeExpression
+		//    : {fmlExpr::LiteralTimeExpression} ( '$time' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralTimeExpression} '$time'
+		//{fmlExpr::LiteralTimeExpression} ( '$time' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralTimeExpression}
 		public Action getLiteralTimeExpressionAction_0() { return cLiteralTimeExpressionAction_0; }
 		
-		//'$time'
+		//( '$time' )
 		public Keyword getTimeKeyword_1() { return cTimeKeyword_1; }
 	}
 	public class LiteralTimeInitialExpressionElements extends AbstractParserRuleElementFinder {
@@ -21376,17 +25314,18 @@
 		private final Action cLiteralTimeExpressionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cTimeInitialKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//LiteralTimeInitialExpression fmlExpr::LiteralTimeExpression:
-		//	{fmlExpr::LiteralTimeExpression} '$time#initial';
+		//LiteralTimeInitialExpression returns fmlExpr::LiteralTimeExpression
+		//    : {fmlExpr::LiteralTimeExpression} ( '$time#initial' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralTimeExpression} '$time#initial'
+		//{fmlExpr::LiteralTimeExpression} ( '$time#initial' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralTimeExpression}
 		public Action getLiteralTimeExpressionAction_0() { return cLiteralTimeExpressionAction_0; }
 		
-		//'$time#initial'
+		//( '$time#initial' )
 		public Keyword getTimeInitialKeyword_1() { return cTimeInitialKeyword_1; }
 	}
 	public class LiteralTimeDeltaExpressionElements extends AbstractParserRuleElementFinder {
@@ -21395,17 +25334,18 @@
 		private final Action cLiteralTimeDeltaExpressionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cDeltaKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//LiteralTimeDeltaExpression fmlExpr::LiteralTimeDeltaExpression:
-		//	{fmlExpr::LiteralTimeDeltaExpression} '$delta';
+		//LiteralTimeDeltaExpression returns fmlExpr::LiteralTimeDeltaExpression
+		//    : {fmlExpr::LiteralTimeDeltaExpression} ( '$delta' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralTimeDeltaExpression} '$delta'
+		//{fmlExpr::LiteralTimeDeltaExpression} ( '$delta' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralTimeDeltaExpression}
 		public Action getLiteralTimeDeltaExpressionAction_0() { return cLiteralTimeDeltaExpressionAction_0; }
 		
-		//'$delta'
+		//( '$delta' )
 		public Keyword getDeltaKeyword_1() { return cDeltaKeyword_1; }
 	}
 	public class LiteralTimeDeltaInitialExpressionElements extends AbstractParserRuleElementFinder {
@@ -21414,17 +25354,18 @@
 		private final Action cLiteralTimeDeltaExpressionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cDeltaInitialKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//LiteralTimeDeltaInitialExpression fmlExpr::LiteralTimeDeltaExpression:
-		//	{fmlExpr::LiteralTimeDeltaExpression} '$delta#initial';
+		//LiteralTimeDeltaInitialExpression returns fmlExpr::LiteralTimeDeltaExpression
+		//    : {fmlExpr::LiteralTimeDeltaExpression} ( '$delta#initial' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralTimeDeltaExpression} '$delta#initial'
+		//{fmlExpr::LiteralTimeDeltaExpression} ( '$delta#initial' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralTimeDeltaExpression}
 		public Action getLiteralTimeDeltaExpressionAction_0() { return cLiteralTimeDeltaExpressionAction_0; }
 		
-		//'$delta#initial'
+		//( '$delta#initial' )
 		public Keyword getDeltaInitialKeyword_1() { return cDeltaInitialKeyword_1; }
 	}
 	public class LiteralReferenceMachineContextElements extends AbstractParserRuleElementFinder {
@@ -21437,17 +25378,22 @@
 		private final RuleCall cLiteralSystemExpressionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
 		private final RuleCall cLiteralEnvExpressionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
 		
-		//LiteralReferenceMachineContext fmlExpr::LiteralReferenceExpression:
-		//	LiteralThisExpression
-		//	| LiteralSelfExpression
-		//	| LiteralParentExpression
-		//	| LiteralSuperExpression
-		//	| LiteralSystemExpression
-		//	| LiteralEnvExpression;
+		//LiteralReferenceMachineContext returns fmlExpr::LiteralReferenceExpression
+		//    : LiteralThisExpression
+		//    | LiteralSelfExpression
+		//    | LiteralParentExpression
+		//    | LiteralSuperExpression
+		//    | LiteralSystemExpression
+		//    | LiteralEnvExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralThisExpression | LiteralSelfExpression | LiteralParentExpression | LiteralSuperExpression |
-		//LiteralSystemExpression | LiteralEnvExpression
+		//LiteralThisExpression
+		//   | LiteralSelfExpression
+		//   | LiteralParentExpression
+		//   | LiteralSuperExpression
+		//   | LiteralSystemExpression
+		//   | LiteralEnvExpression
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralThisExpression
@@ -21474,17 +25420,18 @@
 		private final Action cLiteralThisExpressionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cThisKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//LiteralThisExpression fmlExpr::LiteralThisExpression:
-		//	{fmlExpr::LiteralThisExpression} '$this';
+		//LiteralThisExpression returns fmlExpr::LiteralThisExpression
+		//    : {fmlExpr::LiteralThisExpression} ( '$this' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralThisExpression} '$this'
+		//{fmlExpr::LiteralThisExpression} ( '$this' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralThisExpression}
 		public Action getLiteralThisExpressionAction_0() { return cLiteralThisExpressionAction_0; }
 		
-		//'$this'
+		//( '$this' )
 		public Keyword getThisKeyword_1() { return cThisKeyword_1; }
 	}
 	public class LiteralSelfExpressionElements extends AbstractParserRuleElementFinder {
@@ -21500,26 +25447,29 @@
 		private final RuleCall cModelMachineESUfidParserRuleCall_2_2_0_1 = (RuleCall)cModelMachineCrossReference_2_2_0.eContents().get(1);
 		private final Keyword cGreaterThanSignKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
 		
-		//LiteralSelfExpression fmlExpr::LiteralSelfExpression:
-		//	{fmlExpr::LiteralSelfExpression} '$self' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?;
+		//LiteralSelfExpression returns fmlExpr::LiteralSelfExpression
+		//    : {fmlExpr::LiteralSelfExpression} ( '$self' )
+		//        ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralSelfExpression} '$self' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?
+		//{fmlExpr::LiteralSelfExpression} ( '$self' )
+		//       ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralSelfExpression}
 		public Action getLiteralSelfExpressionAction_0() { return cLiteralSelfExpressionAction_0; }
 		
-		//'$self'
+		//( '$self' )
 		public Keyword getSelfKeyword_1() { return cSelfKeyword_1; }
 		
-		//('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?
+		//( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//'model:'?
+		//( 'model:' )?
 		public Keyword getModelKeyword_2_1() { return cModelKeyword_2_1; }
 		
 		//model=[fmlInfra::Machine|ESUfid]
@@ -21547,26 +25497,29 @@
 		private final RuleCall cModelMachineESUfidParserRuleCall_2_2_0_1 = (RuleCall)cModelMachineCrossReference_2_2_0.eContents().get(1);
 		private final Keyword cGreaterThanSignKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
 		
-		//LiteralParentExpression fmlExpr::LiteralParentExpression:
-		//	{fmlExpr::LiteralParentExpression} '$parent' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?;
+		//LiteralParentExpression returns fmlExpr::LiteralParentExpression
+		//    : {fmlExpr::LiteralParentExpression} ( '$parent' )
+		//        ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralParentExpression} '$parent' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?
+		//{fmlExpr::LiteralParentExpression} ( '$parent' )
+		//       ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralParentExpression}
 		public Action getLiteralParentExpressionAction_0() { return cLiteralParentExpressionAction_0; }
 		
-		//'$parent'
+		//( '$parent' )
 		public Keyword getParentKeyword_1() { return cParentKeyword_1; }
 		
-		//('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?
+		//( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//'model:'?
+		//( 'model:' )?
 		public Keyword getModelKeyword_2_1() { return cModelKeyword_2_1; }
 		
 		//model=[fmlInfra::Machine|ESUfid]
@@ -21594,26 +25547,29 @@
 		private final RuleCall cModelMachineESUfidParserRuleCall_2_2_0_1 = (RuleCall)cModelMachineCrossReference_2_2_0.eContents().get(1);
 		private final Keyword cGreaterThanSignKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
 		
-		//LiteralSuperExpression fmlExpr::LiteralSuperExpression:
-		//	{fmlExpr::LiteralSuperExpression} '$super' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?;
+		//LiteralSuperExpression returns fmlExpr::LiteralSuperExpression
+		//    : {fmlExpr::LiteralSuperExpression} ( '$super' )
+		//        ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralSuperExpression} '$super' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?
+		//{fmlExpr::LiteralSuperExpression} ( '$super' )
+		//       ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralSuperExpression}
 		public Action getLiteralSuperExpressionAction_0() { return cLiteralSuperExpressionAction_0; }
 		
-		//'$super'
+		//( '$super' )
 		public Keyword getSuperKeyword_1() { return cSuperKeyword_1; }
 		
-		//('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?
+		//( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
 		public Group getGroup_2() { return cGroup_2; }
 		
 		//'<'
 		public Keyword getLessThanSignKeyword_2_0() { return cLessThanSignKeyword_2_0; }
 		
-		//'model:'?
+		//( 'model:' )?
 		public Keyword getModelKeyword_2_1() { return cModelKeyword_2_1; }
 		
 		//model=[fmlInfra::Machine|ESUfid]
@@ -21634,17 +25590,18 @@
 		private final Action cLiteralSystemExpressionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cSystemKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//LiteralSystemExpression fmlExpr::LiteralSystemExpression:
-		//	{fmlExpr::LiteralSystemExpression} '$system';
+		//LiteralSystemExpression returns fmlExpr::LiteralSystemExpression
+		//    : {fmlExpr::LiteralSystemExpression} ( '$system' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralSystemExpression} '$system'
+		//{fmlExpr::LiteralSystemExpression} ( '$system' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralSystemExpression}
 		public Action getLiteralSystemExpressionAction_0() { return cLiteralSystemExpressionAction_0; }
 		
-		//'$system'
+		//( '$system' )
 		public Keyword getSystemKeyword_1() { return cSystemKeyword_1; }
 	}
 	public class LiteralEnvExpressionElements extends AbstractParserRuleElementFinder {
@@ -21653,17 +25610,18 @@
 		private final Action cLiteralEnvExpressionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cEnvKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
-		//LiteralEnvExpression fmlExpr::LiteralEnvExpression:
-		//	{fmlExpr::LiteralEnvExpression} '$env';
+		//LiteralEnvExpression returns fmlExpr::LiteralEnvExpression
+		//    : {fmlExpr::LiteralEnvExpression} ( '$env' )
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralEnvExpression} '$env'
+		//{fmlExpr::LiteralEnvExpression} ( '$env' )
 		public Group getGroup() { return cGroup; }
 		
 		//{fmlExpr::LiteralEnvExpression}
 		public Action getLiteralEnvExpressionAction_0() { return cLiteralEnvExpressionAction_0; }
 		
-		//'$env'
+		//( '$env' )
 		public Keyword getEnvKeyword_1() { return cEnvKeyword_1; }
 	}
 	public class LiteralPureReferenceExpressionElements extends AbstractParserRuleElementFinder {
@@ -21675,12 +25633,14 @@
 		//////////////////////////////////////////////////////////////////////////////////
 		//// Value Element Specification Expression Rules
 		//////////////////////////////////////////////////////////////////////////////////
-		//LiteralPureReferenceExpression fmlExpr::LiteralReferenceExpression:
-		//	LiteralPureReferenceElement
-		//	| LiteralReferenceMachineContext;
+		//LiteralPureReferenceExpression returns fmlExpr::LiteralReferenceExpression
+		//    : LiteralPureReferenceElement
+		//    | LiteralReferenceMachineContext
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralPureReferenceElement | LiteralReferenceMachineContext
+		//LiteralPureReferenceElement
+		//   | LiteralReferenceMachineContext
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//LiteralPureReferenceElement
@@ -21702,19 +25662,22 @@
 		private final Assignment cElementAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cElementLiteralReferenceExpressionParserRuleCall_2_0 = (RuleCall)cElementAssignment_2.eContents().get(0);
 		
-		//LiteralReferenceSpecification fmlExpr::LiteralReferenceSpecification:
-		//	{fmlExpr::LiteralReferenceSpecification} (parent+=LiteralReferenceExpression ('.' | '->'))*
-		//	element=LiteralReferenceExpression;
+		//LiteralReferenceSpecification returns fmlExpr::LiteralReferenceSpecification
+		//    : { fmlExpr::LiteralReferenceSpecification }
+		//        ( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
+		//        element=LiteralReferenceExpression
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{fmlExpr::LiteralReferenceSpecification} (parent+=LiteralReferenceExpression ('.' | '->'))*
-		//element=LiteralReferenceExpression
+		//{ fmlExpr::LiteralReferenceSpecification }
+		//       ( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
+		//       element=LiteralReferenceExpression
 		public Group getGroup() { return cGroup; }
 		
-		//{fmlExpr::LiteralReferenceSpecification}
+		//{ fmlExpr::LiteralReferenceSpecification }
 		public Action getLiteralReferenceSpecificationAction_0() { return cLiteralReferenceSpecificationAction_0; }
 		
-		//(parent+=LiteralReferenceExpression ('.' | '->'))*
+		//( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
 		public Group getGroup_1() { return cGroup_1; }
 		
 		//parent+=LiteralReferenceExpression
@@ -21723,7 +25686,7 @@
 		//LiteralReferenceExpression
 		public RuleCall getParentLiteralReferenceExpressionParserRuleCall_1_0_0() { return cParentLiteralReferenceExpressionParserRuleCall_1_0_0; }
 		
-		//('.' | '->')
+		//( '.'  |  '->' )
 		public Alternatives getAlternatives_1_1() { return cAlternatives_1_1; }
 		
 		//'.'
@@ -21779,64 +25742,111 @@
 		private final RuleCall cArgPositionalTupleExpressionListParserRuleCall_2_4_3_1_0 = (RuleCall)cArgAssignment_2_4_3_1.eContents().get(0);
 		private final Keyword cRightSquareBracketKeyword_2_4_3_2 = (Keyword)cGroup_2_4_3.eContents().get(2);
 		
-		//ValueSelectionExpression fmlExpr::Expression:
-		//	LiteralReferenceExpression ({fmlExpr::ValueElementSpecification.parent=current}
-		//	'.' //kind=ValueDotFieldExpressionKind
-		//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-		//	arg=PositionalTupleExpressionList ']'
-		//	//			// TODO '(' parameter ',' ... ',' parameter ')'
-		//	//			| kind=ValueParameterExpressionKind
-		//	//				arg=MixTupleExpressionList  ')'
-		//)?)* ({fmlExpr::ValueElementSpecification.parent=current}
-		//	'->' //kind=ValueArrowFieldExpressionKind
-		//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-		//	arg=PositionalTupleExpressionList ']'
-		//	//			// TODO '(' parameter ',' ... ',' parameter ')'
-		//	//			| kind=ValueParameterExpressionKind
-		//	//				arg=MixTupleExpressionList  ')'
-		//)? ({fmlExpr::ValueElementSpecification.parent=current}
-		//	'.' //kind=ValueDotFieldExpressionKind
-		//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-		//	arg=PositionalTupleExpressionList ']'
-		//	//				// TODO '(' parameter ',' ... ',' parameter ')'
-		//	//				| kind=ValueParameterExpressionKind
-		//	//					arg=MixTupleExpressionList  ')'
-		//)?)*)?;
+		//ValueSelectionExpression returns fmlExpr::Expression
+		//    : LiteralReferenceExpression
+		//        // '.' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '.' //kind=ValueDotFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
+		//        )*
+		//        // '->' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '->' //kind=ValueArrowFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
+		//            // '.' element
+		//            ( { fmlExpr::ValueElementSpecification.parent=current }
+		//                 '.' //kind=ValueDotFieldExpressionKind
+		//                element=[fmlCommon::NamedElement|ESIdentifier]
+		//                // '[' index ',' ... ',' index ']'
+		//                ( kind=ValueIndexExpressionKind
+		//                    arg=PositionalTupleExpressionList  ']'
+		////                // TODO '(' parameter ',' ... ',' parameter ')'
+		////                | kind=ValueParameterExpressionKind
+		////                    arg=MixTupleExpressionList  ')'
+		//                )?
+		//            )*
+		//        )?
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralReferenceExpression ({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //			// TODO '(' parameter ',' ... ',' parameter ')'
-		////			| kind=ValueParameterExpressionKind
-		////				arg=MixTupleExpressionList  ')'
-		//)?)* ({fmlExpr::ValueElementSpecification.parent=current} '->' //kind=ValueArrowFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //			// TODO '(' parameter ',' ... ',' parameter ')'
-		////			| kind=ValueParameterExpressionKind
-		////				arg=MixTupleExpressionList  ')'
-		//)? ({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //				// TODO '(' parameter ',' ... ',' parameter ')'
-		////				| kind=ValueParameterExpressionKind
-		////					arg=MixTupleExpressionList  ')'
-		//)?)*)?
+		// LiteralReferenceExpression
+		//        // '.' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '.' //kind=ValueDotFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
+		//        )*
+		//        // '->' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '->' //kind=ValueArrowFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
+		//            // '.' element
+		//            ( { fmlExpr::ValueElementSpecification.parent=current }
+		//                 '.' //kind=ValueDotFieldExpressionKind
+		//                element=[fmlCommon::NamedElement|ESIdentifier]
+		//                // '[' index ',' ... ',' index ']'
+		//                ( kind=ValueIndexExpressionKind
+		//                    arg=PositionalTupleExpressionList  ']'
+		////                // TODO '(' parameter ',' ... ',' parameter ')'
+		////                | kind=ValueParameterExpressionKind
+		////                    arg=MixTupleExpressionList  ')'
+		//                )?
+		//            )*
+		//        )?
 		public Group getGroup() { return cGroup; }
 		
 		//LiteralReferenceExpression
 		public RuleCall getLiteralReferenceExpressionParserRuleCall_0() { return cLiteralReferenceExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //			// TODO '(' parameter ',' ... ',' parameter ')'
-		////			| kind=ValueParameterExpressionKind
-		////				arg=MixTupleExpressionList  ')'
-		//)?)*
+		//        // '.' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '.' //kind=ValueDotFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
+		//        )*
 		public Group getGroup_1() { return cGroup_1; }
 		
-		//{fmlExpr::ValueElementSpecification.parent=current}
+		//{ fmlExpr::ValueElementSpecification.parent=current }
 		public Action getValueElementSpecificationParentAction_1_0() { return cValueElementSpecificationParentAction_1_0; }
 		
 		//'.'
 		public Keyword getFullStopKeyword_1_1() { return cFullStopKeyword_1_1; }
 		
 		////kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier]
+		//           element=[fmlCommon::NamedElement|ESIdentifier]
 		public Assignment getElementAssignment_1_2() { return cElementAssignment_1_2; }
 		
 		//[fmlCommon::NamedElement|ESIdentifier]
@@ -21845,10 +25855,13 @@
 		//ESIdentifier
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_1_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_1_2_0_1; }
 		
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //			// TODO '(' parameter ',' ... ',' parameter ')'
-		////			| kind=ValueParameterExpressionKind
-		////				arg=MixTupleExpressionList  ')'
-		//)?
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
 		public Group getGroup_1_3() { return cGroup_1_3; }
 		
 		//kind=ValueIndexExpressionKind
@@ -21866,25 +25879,40 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_1_3_2() { return cRightSquareBracketKeyword_1_3_2; }
 		
-		//({fmlExpr::ValueElementSpecification.parent=current} '->' //kind=ValueArrowFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //			// TODO '(' parameter ',' ... ',' parameter ')'
-		////			| kind=ValueParameterExpressionKind
-		////				arg=MixTupleExpressionList  ')'
-		//)? ({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //				// TODO '(' parameter ',' ... ',' parameter ')'
-		////				| kind=ValueParameterExpressionKind
-		////					arg=MixTupleExpressionList  ')'
-		//)?)*)?
+		//        // '->' element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            '->' //kind=ValueArrowFieldExpressionKind
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
+		//            // '.' element
+		//            ( { fmlExpr::ValueElementSpecification.parent=current }
+		//                 '.' //kind=ValueDotFieldExpressionKind
+		//                element=[fmlCommon::NamedElement|ESIdentifier]
+		//                // '[' index ',' ... ',' index ']'
+		//                ( kind=ValueIndexExpressionKind
+		//                    arg=PositionalTupleExpressionList  ']'
+		////                // TODO '(' parameter ',' ... ',' parameter ')'
+		////                | kind=ValueParameterExpressionKind
+		////                    arg=MixTupleExpressionList  ')'
+		//                )?
+		//            )*
+		//        )?
 		public Group getGroup_2() { return cGroup_2; }
 		
-		//{fmlExpr::ValueElementSpecification.parent=current}
+		//{ fmlExpr::ValueElementSpecification.parent=current }
 		public Action getValueElementSpecificationParentAction_2_0() { return cValueElementSpecificationParentAction_2_0; }
 		
 		//'->'
 		public Keyword getHyphenMinusGreaterThanSignKeyword_2_1() { return cHyphenMinusGreaterThanSignKeyword_2_1; }
 		
 		////kind=ValueArrowFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier]
+		//           element=[fmlCommon::NamedElement|ESIdentifier]
 		public Assignment getElementAssignment_2_2() { return cElementAssignment_2_2; }
 		
 		//[fmlCommon::NamedElement|ESIdentifier]
@@ -21893,10 +25921,13 @@
 		//ESIdentifier
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_2_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_2_2_0_1; }
 		
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //			// TODO '(' parameter ',' ... ',' parameter ')'
-		////			| kind=ValueParameterExpressionKind
-		////				arg=MixTupleExpressionList  ')'
-		//)?
+		//            // '[' index ',' ... ',' index ']'
+		//            ( kind=ValueIndexExpressionKind
+		//                arg=PositionalTupleExpressionList  ']'
+		////            // TODO '(' parameter ',' ... ',' parameter ')'
+		////            | kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList  ')'
+		//            )?
 		public Group getGroup_2_3() { return cGroup_2_3; }
 		
 		//kind=ValueIndexExpressionKind
@@ -21914,21 +25945,28 @@
 		//']'
 		public Keyword getRightSquareBracketKeyword_2_3_2() { return cRightSquareBracketKeyword_2_3_2; }
 		
-		//({fmlExpr::ValueElementSpecification.parent=current} '.' //kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //				// TODO '(' parameter ',' ... ',' parameter ')'
-		////				| kind=ValueParameterExpressionKind
-		////					arg=MixTupleExpressionList  ')'
-		//)?)*
+		//            // '.' element
+		//            ( { fmlExpr::ValueElementSpecification.parent=current }
+		//                 '.' //kind=ValueDotFieldExpressionKind
+		//                element=[fmlCommon::NamedElement|ESIdentifier]
+		//                // '[' index ',' ... ',' index ']'
+		//                ( kind=ValueIndexExpressionKind
+		//                    arg=PositionalTupleExpressionList  ']'
+		////                // TODO '(' parameter ',' ... ',' parameter ')'
+		////                | kind=ValueParameterExpressionKind
+		////                    arg=MixTupleExpressionList  ')'
+		//                )?
+		//            )*
 		public Group getGroup_2_4() { return cGroup_2_4; }
 		
-		//{fmlExpr::ValueElementSpecification.parent=current}
+		//{ fmlExpr::ValueElementSpecification.parent=current }
 		public Action getValueElementSpecificationParentAction_2_4_0() { return cValueElementSpecificationParentAction_2_4_0; }
 		
 		//'.'
 		public Keyword getFullStopKeyword_2_4_1() { return cFullStopKeyword_2_4_1; }
 		
 		////kind=ValueDotFieldExpressionKind
-		//element=[fmlCommon::NamedElement|ESIdentifier]
+		//               element=[fmlCommon::NamedElement|ESIdentifier]
 		public Assignment getElementAssignment_2_4_2() { return cElementAssignment_2_4_2; }
 		
 		//[fmlCommon::NamedElement|ESIdentifier]
@@ -21937,10 +25975,13 @@
 		//ESIdentifier
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_2_4_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_2_4_2_0_1; }
 		
-		//(kind=ValueIndexExpressionKind arg=PositionalTupleExpressionList ']' //				// TODO '(' parameter ',' ... ',' parameter ')'
-		////				| kind=ValueParameterExpressionKind
-		////					arg=MixTupleExpressionList  ')'
-		//)?
+		//                // '[' index ',' ... ',' index ']'
+		//                ( kind=ValueIndexExpressionKind
+		//                    arg=PositionalTupleExpressionList  ']'
+		////                // TODO '(' parameter ',' ... ',' parameter ')'
+		////                | kind=ValueParameterExpressionKind
+		////                    arg=MixTupleExpressionList  ')'
+		//                )?
 		public Group getGroup_2_4_3() { return cGroup_2_4_3; }
 		
 		//kind=ValueIndexExpressionKind
@@ -21974,49 +26015,61 @@
 		
 		////ValuePureNamedElementExpression
 		////ValuePureNamedElementExpression returns fmlExpr::Expression
-		////	: LiteralPureReferenceExpression
+		////    : LiteralPureReferenceExpression
 		////
-		////		// '.' element
-		////		( { fmlExpr::ValueElementSpecification.parent=current }
-		////			kind=ValueDotFieldExpressionKind
-		////			element=[fmlCommon::NamedElement|ESIdentifier]
-		////		)*
+		////        // '.' element
+		////        ( { fmlExpr::ValueElementSpecification.parent=current }
+		////            kind=ValueDotFieldExpressionKind
+		////            element=[fmlCommon::NamedElement|ESIdentifier]
+		////        )*
 		////
-		////		// '->' element
-		////		( { fmlExpr::ValueElementSpecification.parent=current }
-		////			kind=ValueArrowFieldExpressionKind
-		////			element=[fmlCommon::NamedElement|ESIdentifier]
+		////        // '->' element
+		////        ( { fmlExpr::ValueElementSpecification.parent=current }
+		////            kind=ValueArrowFieldExpressionKind
+		////            element=[fmlCommon::NamedElement|ESIdentifier]
 		////
-		////			// '.' element
-		////			( { fmlExpr::ValueElementSpecification.parent=current }
-		////				kind=ValueDotFieldExpressionKind
-		////				element=[fmlCommon::NamedElement|ESIdentifier]
-		////			)*
-		////		)?
-		////	;
-		//ValuePureNamedMachineExpression fmlExpr::Expression:
-		//	LiteralPureReferenceExpression ({fmlExpr::ValueElementSpecification.parent=current} kind=(ValueDotFieldExpressionKind
-		//	| ValueArrowFieldExpressionKind) element=[fmlCommon::NamedElement|ESIdentifier])*;
+		////            // '.' element
+		////            ( { fmlExpr::ValueElementSpecification.parent=current }
+		////                kind=ValueDotFieldExpressionKind
+		////                element=[fmlCommon::NamedElement|ESIdentifier]
+		////            )*
+		////        )?
+		////    ;
+		//ValuePureNamedMachineExpression returns fmlExpr::Expression
+		//    : LiteralPureReferenceExpression
+		//        // ( '.' | '->' ) element
+		//        ( { fmlExpr::ValueElementSpecification.parent=current }
+		//            kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//            element=[fmlCommon::NamedElement|ESIdentifier]
+		//        )*
+		//    ;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//LiteralPureReferenceExpression ({fmlExpr::ValueElementSpecification.parent=current} kind=(ValueDotFieldExpressionKind |
-		//ValueArrowFieldExpressionKind) element=[fmlCommon::NamedElement|ESIdentifier])*
+		//LiteralPureReferenceExpression
+		//       // ( '.' | '->' ) element
+		//       ( { fmlExpr::ValueElementSpecification.parent=current }
+		//           kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//           element=[fmlCommon::NamedElement|ESIdentifier]
+		//       )*
 		public Group getGroup() { return cGroup; }
 		
 		//LiteralPureReferenceExpression
 		public RuleCall getLiteralPureReferenceExpressionParserRuleCall_0() { return cLiteralPureReferenceExpressionParserRuleCall_0; }
 		
-		//({fmlExpr::ValueElementSpecification.parent=current} kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind)
-		//element=[fmlCommon::NamedElement|ESIdentifier])*
+		//// ( '.' | '->' ) element
+		//( { fmlExpr::ValueElementSpecification.parent=current }
+		//    kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+		//    element=[fmlCommon::NamedElement|ESIdentifier]
+		//)*
 		public Group getGroup_1() { return cGroup_1; }
 		
-		//{fmlExpr::ValueElementSpecification.parent=current}
+		//{ fmlExpr::ValueElementSpecification.parent=current }
 		public Action getValueElementSpecificationParentAction_1_0() { return cValueElementSpecificationParentAction_1_0; }
 		
-		//kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind)
+		//kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
 		public Assignment getKindAssignment_1_1() { return cKindAssignment_1_1; }
 		
-		//(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind)
+		//(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
 		public Alternatives getKindAlternatives_1_1_0() { return cKindAlternatives_1_1_0; }
 		
 		//ValueDotFieldExpressionKind
@@ -22035,7 +26088,7 @@
 		public RuleCall getElementNamedElementESIdentifierParserRuleCall_1_2_0_1() { return cElementNamedElementESIdentifierParserRuleCall_1_2_0_1; }
 	}
 	
-	public class VisibilityKindElements extends AbstractEnumRuleElementFinder {
+	public class VisibilityKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.VisibilityKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cPublicEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22047,38 +26100,45 @@
 		private final EnumLiteralDeclaration cPackageEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
 		private final Keyword cPackagePackageKeyword_3_0 = (Keyword)cPackageEnumLiteralDeclaration_3.eContents().get(0);
 		
-		//enum VisibilityKind returns fmlCommon::VisibilityKind:
-		//	public | private | protected | package;
+		//enum VisibilityKind returns fmlCommon::VisibilityKind
+		//    : public   ='public'
+		//    | private  ='private'
+		//    | protected='protected'
+		//    | package  ='package'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//public | private | protected | package
+		//public   ='public'
+		//   | private  ='private'
+		//   | protected='protected'
+		//   | package  ='package'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//public
+		//public   ='public'
 		public EnumLiteralDeclaration getPublicEnumLiteralDeclaration_0() { return cPublicEnumLiteralDeclaration_0; }
 		
 		//'public'
 		public Keyword getPublicPublicKeyword_0_0() { return cPublicPublicKeyword_0_0; }
 		
-		//private
+		//private  ='private'
 		public EnumLiteralDeclaration getPrivateEnumLiteralDeclaration_1() { return cPrivateEnumLiteralDeclaration_1; }
 		
 		//'private'
 		public Keyword getPrivatePrivateKeyword_1_0() { return cPrivatePrivateKeyword_1_0; }
 		
-		//protected
+		//protected='protected'
 		public EnumLiteralDeclaration getProtectedEnumLiteralDeclaration_2() { return cProtectedEnumLiteralDeclaration_2; }
 		
 		//'protected'
 		public Keyword getProtectedProtectedKeyword_2_0() { return cProtectedProtectedKeyword_2_0; }
 		
-		//package
+		//package  ='package'
 		public EnumLiteralDeclaration getPackageEnumLiteralDeclaration_3() { return cPackageEnumLiteralDeclaration_3; }
 		
 		//'package'
 		public Keyword getPackagePackageKeyword_3_0() { return cPackagePackageKeyword_3_0; }
 	}
-	public class DesignKindElements extends AbstractEnumRuleElementFinder {
+	public class DesignKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.DesignKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cModelEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22090,54 +26150,64 @@
 		private final EnumLiteralDeclaration cPrototypeEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
 		private final Keyword cPrototypePrototypeKeyword_3_0 = (Keyword)cPrototypeEnumLiteralDeclaration_3.eContents().get(0);
 		
-		//enum DesignKind returns fmlInfra::DesignKind:
-		//	model | prototype | model='#model'
-		//	| prototype='#prototype';
+		//////////////////////////////////////////////////////////////////////////////////
+		//// Machine PropertyDefinition Rules
+		//////////////////////////////////////////////////////////////////////////////////
+		//enum DesignKind returns fmlInfra::DesignKind
+		//    : model     = 'model'
+		//    | prototype = 'prototype'
+		//    | model     = '#model'
+		//    | prototype = '#prototype'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//model | prototype | model='#model' | prototype='#prototype'
+		//model     = 'model'
+		//   | prototype = 'prototype'
+		//   | model     = '#model'
+		//   | prototype = '#prototype'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//model
+		//model     = 'model'
 		public EnumLiteralDeclaration getModelEnumLiteralDeclaration_0() { return cModelEnumLiteralDeclaration_0; }
 		
 		//'model'
 		public Keyword getModelModelKeyword_0_0() { return cModelModelKeyword_0_0; }
 		
-		//prototype
+		//prototype = 'prototype'
 		public EnumLiteralDeclaration getPrototypeEnumLiteralDeclaration_1() { return cPrototypeEnumLiteralDeclaration_1; }
 		
 		//'prototype'
 		public Keyword getPrototypePrototypeKeyword_1_0() { return cPrototypePrototypeKeyword_1_0; }
 		
-		//model='#model'
+		//model     = '#model'
 		public EnumLiteralDeclaration getModelEnumLiteralDeclaration_2() { return cModelEnumLiteralDeclaration_2; }
 		
 		//'#model'
 		public Keyword getModelModelKeyword_2_0() { return cModelModelKeyword_2_0; }
 		
-		//prototype='#prototype'
+		//prototype = '#prototype'
 		public EnumLiteralDeclaration getPrototypeEnumLiteralDeclaration_3() { return cPrototypeEnumLiteralDeclaration_3; }
 		
 		//'#prototype'
 		public Keyword getPrototypePrototypeKeyword_3_0() { return cPrototypePrototypeKeyword_3_0; }
 	}
-	public class DesignInstanceKindElements extends AbstractEnumRuleElementFinder {
+	public class DesignInstanceKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.DesignInstanceKind");
 		private final EnumLiteralDeclaration cInstanceEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cInstanceInstanceKeyword_0 = (Keyword)cInstanceEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum DesignInstanceKind returns fmlInfra::DesignKind:
-		//	instance;
+		//enum DesignInstanceKind returns fmlInfra::DesignKind
+		//    : instance  = 'instance'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//instance
+		//instance  = 'instance'
 		public EnumLiteralDeclaration getInstanceEnumLiteralDeclaration() { return cInstanceEnumLiteralDeclaration; }
 		
 		//'instance'
 		public Keyword getInstanceInstanceKeyword_0() { return cInstanceInstanceKeyword_0; }
 	}
-	public class PseudostateKindElements extends AbstractEnumRuleElementFinder {
+	public class PseudostateKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.PseudostateKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cJunctionEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22157,27 +26227,34 @@
 		private final EnumLiteralDeclaration cShallowHistoryEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
 		private final Keyword cShallowHistoryShistoryKeyword_7_0 = (Keyword)cShallowHistoryEnumLiteralDeclaration_7.eContents().get(0);
 		
-		//enum PseudostateKind returns fmlStmchn::PseudostateKind:
-		//	Junction='junction'
-		//	| Choice='choice'
-		//	| EntryPoint='entryPoint'
-		//	| ExitPoint='exitPoint'
-		//	//	| Initial ='initial'
-		//	//		
-		//	//	| Terminal='terminal'
-		//	//	| Return   ='return'
-		//
-		//	| Fork='fork'
-		//	| Join='join'
-		//	| DeepHistory='dhistory'
-		//	| ShallowHistory='shistory';
+		//enum PseudostateKind returns fmlStmchn::PseudostateKind
+		//    : Junction='junction'
+		//    | Choice  ='choice'
+		//    | EntryPoint='entryPoint'
+		//    | ExitPoint  ='exitPoint'
+		////    | Initial ='initial'
+		////
+		////    | Terminal='terminal'
+		////    | Return   ='return'
+		//    | Fork='fork'
+		//    | Join='join'
+		//    | DeepHistory   ='dhistory'
+		//    | ShallowHistory='shistory'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//Junction='junction' | Choice='choice' | EntryPoint='entryPoint' | ExitPoint='exitPoint' //	| Initial ='initial'
-		////		
-		////	| Terminal='terminal'
-		////	| Return   ='return'
-		//| Fork='fork' | Join='join' | DeepHistory='dhistory' | ShallowHistory='shistory'
+		// Junction='junction'
+		//    | Choice  ='choice'
+		//    | EntryPoint='entryPoint'
+		//    | ExitPoint  ='exitPoint'
+		////    | Initial ='initial'
+		////
+		////    | Terminal='terminal'
+		////    | Return   ='return'
+		//    | Fork='fork'
+		//    | Join='join'
+		//    | DeepHistory   ='dhistory'
+		//    | ShallowHistory='shistory'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//Junction='junction'
@@ -22186,7 +26263,7 @@
 		//'junction'
 		public Keyword getJunctionJunctionKeyword_0_0() { return cJunctionJunctionKeyword_0_0; }
 		
-		//Choice='choice'
+		//Choice  ='choice'
 		public EnumLiteralDeclaration getChoiceEnumLiteralDeclaration_1() { return cChoiceEnumLiteralDeclaration_1; }
 		
 		//'choice'
@@ -22198,7 +26275,7 @@
 		//'entryPoint'
 		public Keyword getEntryPointEntryPointKeyword_2_0() { return cEntryPointEntryPointKeyword_2_0; }
 		
-		//ExitPoint='exitPoint'
+		//ExitPoint  ='exitPoint'
 		public EnumLiteralDeclaration getExitPointEnumLiteralDeclaration_3() { return cExitPointEnumLiteralDeclaration_3; }
 		
 		//'exitPoint'
@@ -22216,7 +26293,7 @@
 		//'join'
 		public Keyword getJoinJoinKeyword_5_0() { return cJoinJoinKeyword_5_0; }
 		
-		//DeepHistory='dhistory'
+		//DeepHistory   ='dhistory'
 		public EnumLiteralDeclaration getDeepHistoryEnumLiteralDeclaration_6() { return cDeepHistoryEnumLiteralDeclaration_6; }
 		
 		//'dhistory'
@@ -22228,22 +26305,23 @@
 		//'shistory'
 		public Keyword getShallowHistoryShistoryKeyword_7_0() { return cShallowHistoryShistoryKeyword_7_0; }
 	}
-	public class PseudostateInitialKindElements extends AbstractEnumRuleElementFinder {
+	public class PseudostateInitialKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.PseudostateInitialKind");
 		private final EnumLiteralDeclaration cInitialEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cInitialInitialKeyword_0 = (Keyword)cInitialEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum PseudostateInitialKind returns fmlStmchn::PseudostateKind:
-		//	Initial='initial';
+		//enum PseudostateInitialKind returns fmlStmchn::PseudostateKind
+		//    : Initial ='initial'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//Initial='initial'
+		//Initial ='initial'
 		public EnumLiteralDeclaration getInitialEnumLiteralDeclaration() { return cInitialEnumLiteralDeclaration; }
 		
 		//'initial'
 		public Keyword getInitialInitialKeyword_0() { return cInitialInitialKeyword_0; }
 	}
-	public class EndingPseudostateKindElements extends AbstractEnumRuleElementFinder {
+	public class EndingPseudostateKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.EndingPseudostateKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cTerminalEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22251,12 +26329,14 @@
 		private final EnumLiteralDeclaration cReturnEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
 		private final Keyword cReturnReturnKeyword_1_0 = (Keyword)cReturnEnumLiteralDeclaration_1.eContents().get(0);
 		
-		//enum EndingPseudostateKind returns fmlStmchn::PseudostateKind:
-		//	Terminal='terminal'
-		//	| Return='return';
+		//enum EndingPseudostateKind returns fmlStmchn::PseudostateKind
+		//    : Terminal='terminal'
+		//    | Return='return'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//Terminal='terminal' | Return='return'
+		//Terminal='terminal'
+		//   | Return='return'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//Terminal='terminal'
@@ -22271,7 +26351,7 @@
 		//'return'
 		public Keyword getReturnReturnKeyword_1_0() { return cReturnReturnKeyword_1_0; }
 	}
-	public class ComProtocolKindElements extends AbstractEnumRuleElementFinder {
+	public class ComProtocolKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ComProtocolKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cEnvEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22281,32 +26361,37 @@
 		private final EnumLiteralDeclaration cMulti_rdvEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
 		private final Keyword cMulti_rdvMultirdvKeyword_2_0 = (Keyword)cMulti_rdvEnumLiteralDeclaration_2.eContents().get(0);
 		
-		//enum ComProtocolKind returns fmlInfra::ComProtocolKind:
-		//	env | rdv | multi_rdv='multirdv';
+		//enum ComProtocolKind returns fmlInfra::ComProtocolKind
+		//    : env       = 'env'
+		//    | rdv       = 'rdv'
+		//    | multi_rdv = 'multirdv'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//env | rdv | multi_rdv='multirdv'
+		//env       = 'env'
+		//   | rdv       = 'rdv'
+		//   | multi_rdv = 'multirdv'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//env
+		//env       = 'env'
 		public EnumLiteralDeclaration getEnvEnumLiteralDeclaration_0() { return cEnvEnumLiteralDeclaration_0; }
 		
 		//'env'
 		public Keyword getEnvEnvKeyword_0_0() { return cEnvEnvKeyword_0_0; }
 		
-		//rdv
+		//rdv       = 'rdv'
 		public EnumLiteralDeclaration getRdvEnumLiteralDeclaration_1() { return cRdvEnumLiteralDeclaration_1; }
 		
 		//'rdv'
 		public Keyword getRdvRdvKeyword_1_0() { return cRdvRdvKeyword_1_0; }
 		
-		//multi_rdv='multirdv'
+		//multi_rdv = 'multirdv'
 		public EnumLiteralDeclaration getMulti_rdvEnumLiteralDeclaration_2() { return cMulti_rdvEnumLiteralDeclaration_2; }
 		
 		//'multirdv'
 		public Keyword getMulti_rdvMultirdvKeyword_2_0() { return cMulti_rdvMultirdvKeyword_2_0; }
 	}
-	public class ComEnvRdvProtocolKindElements extends AbstractEnumRuleElementFinder {
+	public class ComEnvRdvProtocolKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ComEnvRdvProtocolKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cEnvEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22314,56 +26399,61 @@
 		private final EnumLiteralDeclaration cRdvEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
 		private final Keyword cRdvRdvKeyword_1_0 = (Keyword)cRdvEnumLiteralDeclaration_1.eContents().get(0);
 		
-		//enum ComEnvRdvProtocolKind returns fmlInfra::ComProtocolKind:
-		//	env | rdv;
+		//enum ComEnvRdvProtocolKind returns fmlInfra::ComProtocolKind
+		//    : env = 'env'
+		//    | rdv = 'rdv'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//env | rdv
+		//env = 'env'
+		//   | rdv = 'rdv'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//env
+		//env = 'env'
 		public EnumLiteralDeclaration getEnvEnumLiteralDeclaration_0() { return cEnvEnumLiteralDeclaration_0; }
 		
 		//'env'
 		public Keyword getEnvEnvKeyword_0_0() { return cEnvEnvKeyword_0_0; }
 		
-		//rdv
+		//rdv = 'rdv'
 		public EnumLiteralDeclaration getRdvEnumLiteralDeclaration_1() { return cRdvEnumLiteralDeclaration_1; }
 		
 		//'rdv'
 		public Keyword getRdvRdvKeyword_1_0() { return cRdvRdvKeyword_1_0; }
 	}
-	public class ComMultiRdvProtocolKindElements extends AbstractEnumRuleElementFinder {
+	public class ComMultiRdvProtocolKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ComMultiRdvProtocolKind");
 		private final EnumLiteralDeclaration cMulti_rdvEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cMulti_rdvMultirdvKeyword_0 = (Keyword)cMulti_rdvEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum ComMultiRdvProtocolKind returns fmlInfra::ComProtocolKind:
-		//	multi_rdv='multirdv';
+		//enum ComMultiRdvProtocolKind returns fmlInfra::ComProtocolKind
+		//    : multi_rdv = 'multirdv'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//multi_rdv='multirdv'
+		//multi_rdv = 'multirdv'
 		public EnumLiteralDeclaration getMulti_rdvEnumLiteralDeclaration() { return cMulti_rdvEnumLiteralDeclaration; }
 		
 		//'multirdv'
 		public Keyword getMulti_rdvMultirdvKeyword_0() { return cMulti_rdvMultirdvKeyword_0; }
 	}
-	public class BufferProtocolKindElements extends AbstractEnumRuleElementFinder {
+	public class BufferProtocolKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.BufferProtocolKind");
 		private final EnumLiteralDeclaration cBufferEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cBufferBufferKeyword_0 = (Keyword)cBufferEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum BufferProtocolKind returns fmlInfra::ComProtocolKind:
-		//	buffer;
+		//enum BufferProtocolKind returns fmlInfra::ComProtocolKind
+		//    : buffer = 'buffer'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//buffer
+		//buffer = 'buffer'
 		public EnumLiteralDeclaration getBufferEnumLiteralDeclaration() { return cBufferEnumLiteralDeclaration; }
 		
 		//'buffer'
 		public Keyword getBufferBufferKeyword_0() { return cBufferBufferKeyword_0; }
 	}
-	public class ComCastKingElements extends AbstractEnumRuleElementFinder {
+	public class ComCastKingElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ComCastKing");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cUnicastEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22375,38 +26465,45 @@
 		private final EnumLiteralDeclaration cBroadcastEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
 		private final Keyword cBroadcastBroadcastKeyword_3_0 = (Keyword)cBroadcastEnumLiteralDeclaration_3.eContents().get(0);
 		
-		//enum ComCastKing returns fmlInfra::ComCastKind:
-		//	unicast | anycast | multicast | broadcast;
+		//enum ComCastKing returns fmlInfra::ComCastKind
+		//    : unicast   = 'unicast'
+		//    | anycast   = 'anycast'
+		//    | multicast = 'multicast'
+		//    | broadcast = 'broadcast'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//unicast | anycast | multicast | broadcast
+		//unicast   = 'unicast'
+		//   | anycast   = 'anycast'
+		//   | multicast = 'multicast'
+		//   | broadcast = 'broadcast'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//unicast
+		//unicast   = 'unicast'
 		public EnumLiteralDeclaration getUnicastEnumLiteralDeclaration_0() { return cUnicastEnumLiteralDeclaration_0; }
 		
 		//'unicast'
 		public Keyword getUnicastUnicastKeyword_0_0() { return cUnicastUnicastKeyword_0_0; }
 		
-		//anycast
+		//anycast   = 'anycast'
 		public EnumLiteralDeclaration getAnycastEnumLiteralDeclaration_1() { return cAnycastEnumLiteralDeclaration_1; }
 		
 		//'anycast'
 		public Keyword getAnycastAnycastKeyword_1_0() { return cAnycastAnycastKeyword_1_0; }
 		
-		//multicast
+		//multicast = 'multicast'
 		public EnumLiteralDeclaration getMulticastEnumLiteralDeclaration_2() { return cMulticastEnumLiteralDeclaration_2; }
 		
 		//'multicast'
 		public Keyword getMulticastMulticastKeyword_2_0() { return cMulticastMulticastKeyword_2_0; }
 		
-		//broadcast
+		//broadcast = 'broadcast'
 		public EnumLiteralDeclaration getBroadcastEnumLiteralDeclaration_3() { return cBroadcastEnumLiteralDeclaration_3; }
 		
 		//'broadcast'
 		public Keyword getBroadcastBroadcastKeyword_3_0() { return cBroadcastBroadcastKeyword_3_0; }
 	}
-	public class PrimitiveNumberSignElements extends AbstractEnumRuleElementFinder {
+	public class PrimitiveNumberSignElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.PrimitiveNumberSign");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cPositiveEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22418,14 +26515,18 @@
 		private final EnumLiteralDeclaration cNegative_strictEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
 		private final Keyword cNegative_strictHyphenMinusHyphenMinusKeyword_3_0 = (Keyword)cNegative_strictEnumLiteralDeclaration_3.eContents().get(0);
 		
-		//enum PrimitiveNumberSign returns fmlType::PrimitiveNumberSign:
-		//	positive='+'
-		//	| positive_strict='++'
-		//	| negative='-'
-		//	| negative_strict='--';
+		//enum PrimitiveNumberSign returns fmlType::PrimitiveNumberSign
+		//    : positive='+'
+		//    | positive_strict='++'
+		//    | negative='-'
+		//    | negative_strict='--'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//positive='+' | positive_strict='++' | negative='-' | negative_strict='--'
+		//positive='+'
+		//   | positive_strict='++'
+		//   | negative='-'
+		//   | negative_strict='--'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
 		//positive='+'
@@ -22452,7 +26553,7 @@
 		//'--'
 		public Keyword getNegative_strictHyphenMinusHyphenMinusKeyword_3_0() { return cNegative_strictHyphenMinusHyphenMinusKeyword_3_0; }
 	}
-	public class PrimitiveInstanceKindElements extends AbstractEnumRuleElementFinder {
+	public class PrimitiveInstanceKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.PrimitiveInstanceKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cBufferEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22468,50 +26569,61 @@
 		private final EnumLiteralDeclaration cVertexEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
 		private final Keyword cVertexVertexKeyword_5_0 = (Keyword)cVertexEnumLiteralDeclaration_5.eContents().get(0);
 		
-		//enum PrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind:
-		//	buffer | message | port | signal | machine | vertex;
+		//enum PrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind
+		//    : buffer='buffer'
+		//    | message='message'
+		//    | port='port'
+		//    | signal='signal'
+		//    | machine='machine'
+		//    | vertex='vertex'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//buffer | message | port | signal | machine | vertex
+		//buffer='buffer'
+		//   | message='message'
+		//   | port='port'
+		//   | signal='signal'
+		//   | machine='machine'
+		//   | vertex='vertex'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//buffer
+		//buffer='buffer'
 		public EnumLiteralDeclaration getBufferEnumLiteralDeclaration_0() { return cBufferEnumLiteralDeclaration_0; }
 		
 		//'buffer'
 		public Keyword getBufferBufferKeyword_0_0() { return cBufferBufferKeyword_0_0; }
 		
-		//message
+		//message='message'
 		public EnumLiteralDeclaration getMessageEnumLiteralDeclaration_1() { return cMessageEnumLiteralDeclaration_1; }
 		
 		//'message'
 		public Keyword getMessageMessageKeyword_1_0() { return cMessageMessageKeyword_1_0; }
 		
-		//port
+		//port='port'
 		public EnumLiteralDeclaration getPortEnumLiteralDeclaration_2() { return cPortEnumLiteralDeclaration_2; }
 		
 		//'port'
 		public Keyword getPortPortKeyword_2_0() { return cPortPortKeyword_2_0; }
 		
-		//signal
+		//signal='signal'
 		public EnumLiteralDeclaration getSignalEnumLiteralDeclaration_3() { return cSignalEnumLiteralDeclaration_3; }
 		
 		//'signal'
 		public Keyword getSignalSignalKeyword_3_0() { return cSignalSignalKeyword_3_0; }
 		
-		//machine
+		//machine='machine'
 		public EnumLiteralDeclaration getMachineEnumLiteralDeclaration_4() { return cMachineEnumLiteralDeclaration_4; }
 		
 		//'machine'
 		public Keyword getMachineMachineKeyword_4_0() { return cMachineMachineKeyword_4_0; }
 		
-		//vertex
+		//vertex='vertex'
 		public EnumLiteralDeclaration getVertexEnumLiteralDeclaration_5() { return cVertexEnumLiteralDeclaration_5; }
 		
 		//'vertex'
 		public Keyword getVertexVertexKeyword_5_0() { return cVertexVertexKeyword_5_0; }
 	}
-	public class CollectionKindElements extends AbstractEnumRuleElementFinder {
+	public class CollectionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.CollectionKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cVectorEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22529,56 +26641,69 @@
 		private final EnumLiteralDeclaration cLifoEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
 		private final Keyword cLifoLifoKeyword_6_0 = (Keyword)cLifoEnumLiteralDeclaration_6.eContents().get(0);
 		
-		//enum CollectionKind returns fmlType::CollectionKind:
-		//	vector | rvector | list | set | bag | fifo | lifo;
+		//enum CollectionKind returns fmlType::CollectionKind
+		//    : vector = 'vector'
+		//    | rvector = 'rvector'
+		//    | list='list'
+		//    | set = 'set'
+		//    | bag = 'bag'
+		//    | fifo = 'fifo'
+		//    | lifo = 'lifo'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//vector | rvector | list | set | bag | fifo | lifo
+		//vector = 'vector'
+		//   | rvector = 'rvector'
+		//   | list='list'
+		//   | set = 'set'
+		//   | bag = 'bag'
+		//   | fifo = 'fifo'
+		//   | lifo = 'lifo'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//vector
+		//vector = 'vector'
 		public EnumLiteralDeclaration getVectorEnumLiteralDeclaration_0() { return cVectorEnumLiteralDeclaration_0; }
 		
 		//'vector'
 		public Keyword getVectorVectorKeyword_0_0() { return cVectorVectorKeyword_0_0; }
 		
-		//rvector
+		//rvector = 'rvector'
 		public EnumLiteralDeclaration getRvectorEnumLiteralDeclaration_1() { return cRvectorEnumLiteralDeclaration_1; }
 		
 		//'rvector'
 		public Keyword getRvectorRvectorKeyword_1_0() { return cRvectorRvectorKeyword_1_0; }
 		
-		//list
+		//list='list'
 		public EnumLiteralDeclaration getListEnumLiteralDeclaration_2() { return cListEnumLiteralDeclaration_2; }
 		
 		//'list'
 		public Keyword getListListKeyword_2_0() { return cListListKeyword_2_0; }
 		
-		//set
+		//set = 'set'
 		public EnumLiteralDeclaration getSetEnumLiteralDeclaration_3() { return cSetEnumLiteralDeclaration_3; }
 		
 		//'set'
 		public Keyword getSetSetKeyword_3_0() { return cSetSetKeyword_3_0; }
 		
-		//bag
+		//bag = 'bag'
 		public EnumLiteralDeclaration getBagEnumLiteralDeclaration_4() { return cBagEnumLiteralDeclaration_4; }
 		
 		//'bag'
 		public Keyword getBagBagKeyword_4_0() { return cBagBagKeyword_4_0; }
 		
-		//fifo
+		//fifo = 'fifo'
 		public EnumLiteralDeclaration getFifoEnumLiteralDeclaration_5() { return cFifoEnumLiteralDeclaration_5; }
 		
 		//'fifo'
 		public Keyword getFifoFifoKeyword_5_0() { return cFifoFifoKeyword_5_0; }
 		
-		//lifo
+		//lifo = 'lifo'
 		public EnumLiteralDeclaration getLifoEnumLiteralDeclaration_6() { return cLifoEnumLiteralDeclaration_6; }
 		
 		//'lifo'
 		public Keyword getLifoLifoKeyword_6_0() { return cLifoLifoKeyword_6_0; }
 	}
-	public class ParameterDirectionKindElements extends AbstractEnumRuleElementFinder {
+	public class ParameterDirectionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ParameterDirectionKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cInEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22594,52 +26719,64 @@
 		private final EnumLiteralDeclaration cReturnEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
 		private final Keyword cReturnReturnKeyword_5_0 = (Keyword)cReturnEnumLiteralDeclaration_5.eContents().get(0);
 		
-		//enum ParameterDirectionKind returns fmlInfra::ParameterDirectionKind:
-		//	in | in='input'
-		//	| inout | out | out='output'
-		//	| return;
+		//////////////////////////////////////////////////////////////////////////////////
+		//// Functional ParameterSet Rules
+		//////////////////////////////////////////////////////////////////////////////////
+		//enum ParameterDirectionKind returns fmlInfra::ParameterDirectionKind
+		//    : in     = 'in'
+		//    | in     = 'input'
+		//    | inout  = 'inout'
+		//    | out    = 'out'
+		//    | out    = 'output'
+		//    | return = 'return'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//in | in='input' | inout | out | out='output' | return
+		//in     = 'in'
+		//   | in     = 'input'
+		//   | inout  = 'inout'
+		//   | out    = 'out'
+		//   | out    = 'output'
+		//   | return = 'return'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//in
+		//in     = 'in'
 		public EnumLiteralDeclaration getInEnumLiteralDeclaration_0() { return cInEnumLiteralDeclaration_0; }
 		
 		//'in'
 		public Keyword getInInKeyword_0_0() { return cInInKeyword_0_0; }
 		
-		//in='input'
+		//in     = 'input'
 		public EnumLiteralDeclaration getInEnumLiteralDeclaration_1() { return cInEnumLiteralDeclaration_1; }
 		
 		//'input'
 		public Keyword getInInputKeyword_1_0() { return cInInputKeyword_1_0; }
 		
-		//inout
+		//inout  = 'inout'
 		public EnumLiteralDeclaration getInoutEnumLiteralDeclaration_2() { return cInoutEnumLiteralDeclaration_2; }
 		
 		//'inout'
 		public Keyword getInoutInoutKeyword_2_0() { return cInoutInoutKeyword_2_0; }
 		
-		//out
+		//out    = 'out'
 		public EnumLiteralDeclaration getOutEnumLiteralDeclaration_3() { return cOutEnumLiteralDeclaration_3; }
 		
 		//'out'
 		public Keyword getOutOutKeyword_3_0() { return cOutOutKeyword_3_0; }
 		
-		//out='output'
+		//out    = 'output'
 		public EnumLiteralDeclaration getOutEnumLiteralDeclaration_4() { return cOutEnumLiteralDeclaration_4; }
 		
 		//'output'
 		public Keyword getOutOutputKeyword_4_0() { return cOutOutputKeyword_4_0; }
 		
-		//return
+		//return = 'return'
 		public EnumLiteralDeclaration getReturnEnumLiteralDeclaration_5() { return cReturnEnumLiteralDeclaration_5; }
 		
 		//'return'
 		public Keyword getReturnReturnKeyword_5_0() { return cReturnReturnKeyword_5_0; }
 	}
-	public class BufferContainerKindElements extends AbstractEnumRuleElementFinder {
+	public class BufferContainerKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.BufferContainerKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cSetEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22651,38 +26788,45 @@
 		private final EnumLiteralDeclaration cLifoEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
 		private final Keyword cLifoLifoKeyword_3_0 = (Keyword)cLifoEnumLiteralDeclaration_3.eContents().get(0);
 		
-		//enum BufferContainerKind returns fmlType::CollectionKind:
-		//	set | bag | fifo | lifo;
+		//enum BufferContainerKind returns fmlType::CollectionKind
+		//    : set  = 'set'
+		//    | bag  = 'bag'
+		//    | fifo = 'fifo'
+		//    | lifo = 'lifo'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//set | bag | fifo | lifo
+		//set  = 'set'
+		//   | bag  = 'bag'
+		//   | fifo = 'fifo'
+		//   | lifo = 'lifo'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//set
+		//set  = 'set'
 		public EnumLiteralDeclaration getSetEnumLiteralDeclaration_0() { return cSetEnumLiteralDeclaration_0; }
 		
 		//'set'
 		public Keyword getSetSetKeyword_0_0() { return cSetSetKeyword_0_0; }
 		
-		//bag
+		//bag  = 'bag'
 		public EnumLiteralDeclaration getBagEnumLiteralDeclaration_1() { return cBagEnumLiteralDeclaration_1; }
 		
 		//'bag'
 		public Keyword getBagBagKeyword_1_0() { return cBagBagKeyword_1_0; }
 		
-		//fifo
+		//fifo = 'fifo'
 		public EnumLiteralDeclaration getFifoEnumLiteralDeclaration_2() { return cFifoEnumLiteralDeclaration_2; }
 		
 		//'fifo'
 		public Keyword getFifoFifoKeyword_2_0() { return cFifoFifoKeyword_2_0; }
 		
-		//lifo
+		//lifo = 'lifo'
 		public EnumLiteralDeclaration getLifoEnumLiteralDeclaration_3() { return cLifoEnumLiteralDeclaration_3; }
 		
 		//'lifo'
 		public Keyword getLifoLifoKeyword_3_0() { return cLifoLifoKeyword_3_0; }
 	}
-	public class ChannelDirectionElements extends AbstractEnumRuleElementFinder {
+	public class ChannelDirectionElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ChannelDirection");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cInputEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22692,32 +26836,40 @@
 		private final EnumLiteralDeclaration cOutputEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
 		private final Keyword cOutputOutputKeyword_2_0 = (Keyword)cOutputEnumLiteralDeclaration_2.eContents().get(0);
 		
-		//enum ChannelDirection returns fmlInfra::ChannelDirection:
-		//	input | inout | output;
+		//////////////////////////////////////////////////////////////////////////////////
+		//// Channel rules
+		//////////////////////////////////////////////////////////////////////////////////
+		//enum ChannelDirection returns fmlInfra::ChannelDirection
+		//    : input  = 'input'
+		//    | inout  = 'inout'
+		//    | output = 'output'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//input | inout | output
+		//input  = 'input'
+		//   | inout  = 'inout'
+		//   | output = 'output'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//input
+		//input  = 'input'
 		public EnumLiteralDeclaration getInputEnumLiteralDeclaration_0() { return cInputEnumLiteralDeclaration_0; }
 		
 		//'input'
 		public Keyword getInputInputKeyword_0_0() { return cInputInputKeyword_0_0; }
 		
-		//inout
+		//inout  = 'inout'
 		public EnumLiteralDeclaration getInoutEnumLiteralDeclaration_1() { return cInoutEnumLiteralDeclaration_1; }
 		
 		//'inout'
 		public Keyword getInoutInoutKeyword_1_0() { return cInoutInoutKeyword_1_0; }
 		
-		//output
+		//output = 'output'
 		public EnumLiteralDeclaration getOutputEnumLiteralDeclaration_2() { return cOutputEnumLiteralDeclaration_2; }
 		
 		//'output'
 		public Keyword getOutputOutputKeyword_2_0() { return cOutputOutputKeyword_2_0; }
 	}
-	public class TransitionMocElements extends AbstractEnumRuleElementFinder {
+	public class TransitionMocElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.TransitionMoc");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cSimpleEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22727,32 +26879,37 @@
 		private final EnumLiteralDeclaration cFinalEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
 		private final Keyword cFinalFinalKeyword_2_0 = (Keyword)cFinalEnumLiteralDeclaration_2.eContents().get(0);
 		
-		//enum TransitionMoc returns fmlStmchn::TransitionMoc:
-		//	simple | abort | final;
+		//enum TransitionMoc returns fmlStmchn::TransitionMoc
+		//    : simple = 'simple'
+		//    | abort  = 'abort'
+		//    | final  = 'final'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//simple | abort | final
+		//simple = 'simple'
+		//   | abort  = 'abort'
+		//   | final  = 'final'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//simple
+		//simple = 'simple'
 		public EnumLiteralDeclaration getSimpleEnumLiteralDeclaration_0() { return cSimpleEnumLiteralDeclaration_0; }
 		
 		//'simple'
 		public Keyword getSimpleSimpleKeyword_0_0() { return cSimpleSimpleKeyword_0_0; }
 		
-		//abort
+		//abort  = 'abort'
 		public EnumLiteralDeclaration getAbortEnumLiteralDeclaration_1() { return cAbortEnumLiteralDeclaration_1; }
 		
 		//'abort'
 		public Keyword getAbortAbortKeyword_1_0() { return cAbortAbortKeyword_1_0; }
 		
-		//final
+		//final  = 'final'
 		public EnumLiteralDeclaration getFinalEnumLiteralDeclaration_2() { return cFinalEnumLiteralDeclaration_2; }
 		
 		//'final'
 		public Keyword getFinalFinalKeyword_2_0() { return cFinalFinalKeyword_2_0; }
 	}
-	public class InterruptStatementKindElements extends AbstractEnumRuleElementFinder {
+	public class InterruptStatementKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.InterruptStatementKind");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cBreakEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22764,38 +26921,45 @@
 		private final EnumLiteralDeclaration cExitEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
 		private final Keyword cExitExitKeyword_3_0 = (Keyword)cExitEnumLiteralDeclaration_3.eContents().get(0);
 		
-		//enum InterruptStatementKind returns fmlStmnt::InterruptStatementKind:
-		//	break | continue | return | exit;
+		//enum InterruptStatementKind returns fmlStmnt::InterruptStatementKind
+		//    : break    = 'break'
+		//    | continue = 'continue'
+		//    | return   = 'return'
+		//    | exit     = 'exit'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//break | continue | return | exit
+		//break    = 'break'
+		//   | continue = 'continue'
+		//   | return   = 'return'
+		//   | exit     = 'exit'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//break
+		//break    = 'break'
 		public EnumLiteralDeclaration getBreakEnumLiteralDeclaration_0() { return cBreakEnumLiteralDeclaration_0; }
 		
 		//'break'
 		public Keyword getBreakBreakKeyword_0_0() { return cBreakBreakKeyword_0_0; }
 		
-		//continue
+		//continue = 'continue'
 		public EnumLiteralDeclaration getContinueEnumLiteralDeclaration_1() { return cContinueEnumLiteralDeclaration_1; }
 		
 		//'continue'
 		public Keyword getContinueContinueKeyword_1_0() { return cContinueContinueKeyword_1_0; }
 		
-		//return
+		//return   = 'return'
 		public EnumLiteralDeclaration getReturnEnumLiteralDeclaration_2() { return cReturnEnumLiteralDeclaration_2; }
 		
 		//'return'
 		public Keyword getReturnReturnKeyword_2_0() { return cReturnReturnKeyword_2_0; }
 		
-		//exit
+		//exit     = 'exit'
 		public EnumLiteralDeclaration getExitEnumLiteralDeclaration_3() { return cExitEnumLiteralDeclaration_3; }
 		
 		//'exit'
 		public Keyword getExitExitKeyword_3_0() { return cExitExitKeyword_3_0; }
 	}
-	public class OPERATOR_ACTIVITYElements extends AbstractEnumRuleElementFinder {
+	public class OPERATOR_ACTIVITYElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.OPERATOR_ACTIVITY");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cInitEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22835,124 +26999,157 @@
 		private final EnumLiteralDeclaration cRtcEnumLiteralDeclaration_17 = (EnumLiteralDeclaration)cAlternatives.eContents().get(17);
 		private final Keyword cRtcRtcKeyword_17_0 = (Keyword)cRtcEnumLiteralDeclaration_17.eContents().get(0);
 		
-		//enum OPERATOR_ACTIVITY returns fmlStmnt::ActivityStatementKind:
-		//	init | final | new | destroy | start | stop | restart | suspend | resume | wait | disable | enable | abort | goto |
-		//	schedule | irun | run | rtc;
+		//enum OPERATOR_ACTIVITY returns fmlStmnt::ActivityStatementKind
+		//    : init     = 'init'
+		//    | final    = 'final'
+		//    | new      = 'new'
+		//    | destroy  = 'destroy'
+		//    | start    = 'start'
+		//    | stop     = 'stop'
+		//    | restart  = 'restart'
+		//    | suspend  = 'suspend'
+		//    | resume   = 'resume'
+		//    | wait     = 'wait'
+		//    | disable  = 'disable'
+		//    | enable   = 'enable'
+		//    | abort    = 'abort'
+		//    | goto     = 'goto'
+		//    | schedule = 'schedule'
+		//    | irun = 'irun'
+		//    | run  = 'run'
+		//    | rtc  = 'rtc'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//init | final | new | destroy | start | stop | restart | suspend | resume | wait | disable | enable | abort | goto |
-		//schedule | irun | run | rtc
+		//init     = 'init'
+		//   | final    = 'final'
+		//   | new      = 'new'
+		//   | destroy  = 'destroy'
+		//   | start    = 'start'
+		//   | stop     = 'stop'
+		//   | restart  = 'restart'
+		//   | suspend  = 'suspend'
+		//   | resume   = 'resume'
+		//   | wait     = 'wait'
+		//   | disable  = 'disable'
+		//   | enable   = 'enable'
+		//   | abort    = 'abort'
+		//   | goto     = 'goto'
+		//   | schedule = 'schedule'
+		//   | irun = 'irun'
+		//   | run  = 'run'
+		//   | rtc  = 'rtc'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//init
+		//init     = 'init'
 		public EnumLiteralDeclaration getInitEnumLiteralDeclaration_0() { return cInitEnumLiteralDeclaration_0; }
 		
 		//'init'
 		public Keyword getInitInitKeyword_0_0() { return cInitInitKeyword_0_0; }
 		
-		//final
+		//final    = 'final'
 		public EnumLiteralDeclaration getFinalEnumLiteralDeclaration_1() { return cFinalEnumLiteralDeclaration_1; }
 		
 		//'final'
 		public Keyword getFinalFinalKeyword_1_0() { return cFinalFinalKeyword_1_0; }
 		
-		//new
+		//new      = 'new'
 		public EnumLiteralDeclaration getNewEnumLiteralDeclaration_2() { return cNewEnumLiteralDeclaration_2; }
 		
 		//'new'
 		public Keyword getNewNewKeyword_2_0() { return cNewNewKeyword_2_0; }
 		
-		//destroy
+		//destroy  = 'destroy'
 		public EnumLiteralDeclaration getDestroyEnumLiteralDeclaration_3() { return cDestroyEnumLiteralDeclaration_3; }
 		
 		//'destroy'
 		public Keyword getDestroyDestroyKeyword_3_0() { return cDestroyDestroyKeyword_3_0; }
 		
-		//start
+		//start    = 'start'
 		public EnumLiteralDeclaration getStartEnumLiteralDeclaration_4() { return cStartEnumLiteralDeclaration_4; }
 		
 		//'start'
 		public Keyword getStartStartKeyword_4_0() { return cStartStartKeyword_4_0; }
 		
-		//stop
+		//stop     = 'stop'
 		public EnumLiteralDeclaration getStopEnumLiteralDeclaration_5() { return cStopEnumLiteralDeclaration_5; }
 		
 		//'stop'
 		public Keyword getStopStopKeyword_5_0() { return cStopStopKeyword_5_0; }
 		
-		//restart
+		//restart  = 'restart'
 		public EnumLiteralDeclaration getRestartEnumLiteralDeclaration_6() { return cRestartEnumLiteralDeclaration_6; }
 		
 		//'restart'
 		public Keyword getRestartRestartKeyword_6_0() { return cRestartRestartKeyword_6_0; }
 		
-		//suspend
+		//suspend  = 'suspend'
 		public EnumLiteralDeclaration getSuspendEnumLiteralDeclaration_7() { return cSuspendEnumLiteralDeclaration_7; }
 		
 		//'suspend'
 		public Keyword getSuspendSuspendKeyword_7_0() { return cSuspendSuspendKeyword_7_0; }
 		
-		//resume
+		//resume   = 'resume'
 		public EnumLiteralDeclaration getResumeEnumLiteralDeclaration_8() { return cResumeEnumLiteralDeclaration_8; }
 		
 		//'resume'
 		public Keyword getResumeResumeKeyword_8_0() { return cResumeResumeKeyword_8_0; }
 		
-		//wait
+		//wait     = 'wait'
 		public EnumLiteralDeclaration getWaitEnumLiteralDeclaration_9() { return cWaitEnumLiteralDeclaration_9; }
 		
 		//'wait'
 		public Keyword getWaitWaitKeyword_9_0() { return cWaitWaitKeyword_9_0; }
 		
-		//disable
+		//disable  = 'disable'
 		public EnumLiteralDeclaration getDisableEnumLiteralDeclaration_10() { return cDisableEnumLiteralDeclaration_10; }
 		
 		//'disable'
 		public Keyword getDisableDisableKeyword_10_0() { return cDisableDisableKeyword_10_0; }
 		
-		//enable
+		//enable   = 'enable'
 		public EnumLiteralDeclaration getEnableEnumLiteralDeclaration_11() { return cEnableEnumLiteralDeclaration_11; }
 		
 		//'enable'
 		public Keyword getEnableEnableKeyword_11_0() { return cEnableEnableKeyword_11_0; }
 		
-		//abort
+		//abort    = 'abort'
 		public EnumLiteralDeclaration getAbortEnumLiteralDeclaration_12() { return cAbortEnumLiteralDeclaration_12; }
 		
 		//'abort'
 		public Keyword getAbortAbortKeyword_12_0() { return cAbortAbortKeyword_12_0; }
 		
-		//goto
+		//goto     = 'goto'
 		public EnumLiteralDeclaration getGotoEnumLiteralDeclaration_13() { return cGotoEnumLiteralDeclaration_13; }
 		
 		//'goto'
 		public Keyword getGotoGotoKeyword_13_0() { return cGotoGotoKeyword_13_0; }
 		
-		//schedule
+		//schedule = 'schedule'
 		public EnumLiteralDeclaration getScheduleEnumLiteralDeclaration_14() { return cScheduleEnumLiteralDeclaration_14; }
 		
 		//'schedule'
 		public Keyword getScheduleScheduleKeyword_14_0() { return cScheduleScheduleKeyword_14_0; }
 		
-		//irun
+		//irun = 'irun'
 		public EnumLiteralDeclaration getIrunEnumLiteralDeclaration_15() { return cIrunEnumLiteralDeclaration_15; }
 		
 		//'irun'
 		public Keyword getIrunIrunKeyword_15_0() { return cIrunIrunKeyword_15_0; }
 		
-		//run
+		//run  = 'run'
 		public EnumLiteralDeclaration getRunEnumLiteralDeclaration_16() { return cRunEnumLiteralDeclaration_16; }
 		
 		//'run'
 		public Keyword getRunRunKeyword_16_0() { return cRunRunKeyword_16_0; }
 		
-		//rtc
+		//rtc  = 'rtc'
 		public EnumLiteralDeclaration getRtcEnumLiteralDeclaration_17() { return cRtcEnumLiteralDeclaration_17; }
 		
 		//'rtc'
 		public Keyword getRtcRtcKeyword_17_0() { return cRtcRtcKeyword_17_0; }
 	}
-	public class OPERATOR_METAElements extends AbstractEnumRuleElementFinder {
+	public class OPERATOR_METAElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.OPERATOR_META");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cInformalEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
@@ -22970,68 +27167,76 @@
 		private final EnumLiteralDeclaration cRunEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
 		private final Keyword cRunRunKeyword_6_0 = (Keyword)cRunEnumLiteralDeclaration_6.eContents().get(0);
 		
-		//enum OPERATOR_META returns fmlStmnt::MetaStatementKind:
-		//	informal='@informal'
-		//	| trace='@trace'
-		//	| debug='@debug'
-		//	| comment='@comment'
-		//	| quote='@quote'
-		//	| eval='@eval'
-		//	| run='@run';
+		//enum OPERATOR_META returns fmlStmnt::MetaStatementKind
+		//    : informal = '@informal'
+		//    | trace    = '@trace'
+		//    | debug    = '@debug'
+		//    | comment  = '@comment'
+		//    | quote    = '@quote'
+		//    | eval     = '@eval'
+		//    | run      = '@run'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
-		//informal='@informal' | trace='@trace' | debug='@debug' | comment='@comment' | quote='@quote' | eval='@eval' | run='@run'
+		//informal = '@informal'
+		//   | trace    = '@trace'
+		//   | debug    = '@debug'
+		//   | comment  = '@comment'
+		//   | quote    = '@quote'
+		//   | eval     = '@eval'
+		//   | run      = '@run'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//informal='@informal'
+		//informal = '@informal'
 		public EnumLiteralDeclaration getInformalEnumLiteralDeclaration_0() { return cInformalEnumLiteralDeclaration_0; }
 		
 		//'@informal'
 		public Keyword getInformalInformalKeyword_0_0() { return cInformalInformalKeyword_0_0; }
 		
-		//trace='@trace'
+		//trace    = '@trace'
 		public EnumLiteralDeclaration getTraceEnumLiteralDeclaration_1() { return cTraceEnumLiteralDeclaration_1; }
 		
 		//'@trace'
 		public Keyword getTraceTraceKeyword_1_0() { return cTraceTraceKeyword_1_0; }
 		
-		//debug='@debug'
+		//debug    = '@debug'
 		public EnumLiteralDeclaration getDebugEnumLiteralDeclaration_2() { return cDebugEnumLiteralDeclaration_2; }
 		
 		//'@debug'
 		public Keyword getDebugDebugKeyword_2_0() { return cDebugDebugKeyword_2_0; }
 		
-		//comment='@comment'
+		//comment  = '@comment'
 		public EnumLiteralDeclaration getCommentEnumLiteralDeclaration_3() { return cCommentEnumLiteralDeclaration_3; }
 		
 		//'@comment'
 		public Keyword getCommentCommentKeyword_3_0() { return cCommentCommentKeyword_3_0; }
 		
-		//quote='@quote'
+		//quote    = '@quote'
 		public EnumLiteralDeclaration getQuoteEnumLiteralDeclaration_4() { return cQuoteEnumLiteralDeclaration_4; }
 		
 		//'@quote'
 		public Keyword getQuoteQuoteKeyword_4_0() { return cQuoteQuoteKeyword_4_0; }
 		
-		//eval='@eval'
+		//eval     = '@eval'
 		public EnumLiteralDeclaration getEvalEnumLiteralDeclaration_5() { return cEvalEnumLiteralDeclaration_5; }
 		
 		//'@eval'
 		public Keyword getEvalEvalKeyword_5_0() { return cEvalEvalKeyword_5_0; }
 		
-		//run='@run'
+		//run      = '@run'
 		public EnumLiteralDeclaration getRunEnumLiteralDeclaration_6() { return cRunEnumLiteralDeclaration_6; }
 		
 		//'@run'
 		public Keyword getRunRunKeyword_6_0() { return cRunRunKeyword_6_0; }
 	}
-	public class AnyPrimitiveInstanceKindElements extends AbstractEnumRuleElementFinder {
+	public class AnyPrimitiveInstanceKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.AnyPrimitiveInstanceKind");
 		private final EnumLiteralDeclaration cAnyEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cAnyNullKeyword_0 = (Keyword)cAnyEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum AnyPrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind:
-		//	any='$null';
+		//enum AnyPrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind
+		//    : any='$null'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
 		//any='$null'
@@ -23040,13 +27245,59 @@
 		//'$null'
 		public Keyword getAnyNullKeyword_0() { return cAnyNullKeyword_0; }
 	}
-	public class ValueDotFieldExpressionKindElements extends AbstractEnumRuleElementFinder {
+	public class ValueDotFieldExpressionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ValueDotFieldExpressionKind");
 		private final EnumLiteralDeclaration cFieldEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cFieldFullStopKeyword_0 = (Keyword)cFieldEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum ValueDotFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-		//	field='.';
+		////ValueAnyElementExpression returns fmlExpr::ValueElementSpecification
+		////    : element=[fmlCommon::NamedElement|ESIdentifier]
+		////
+		////        // '.' element
+		////        ( { fmlExpr::ValueElementSpecification.parent=current }
+		////            kind=ValueDotFieldExpressionKind
+		////            element=[fmlCommon::NamedElement|ESIdentifier]
+		////
+		////        // '[' index ',' ... ',' index ']'
+		////        | { fmlExpr::ValueElementSpecification.parent=current }
+		////            kind=ValueIndexExpressionKind
+		////            arg=PositionalTupleExpressionList
+		////            ']'
+		////
+		////        // '(' parameter ',' ... ',' parameter ')'
+		////        | { fmlExpr::ValueElementSpecification.parent=current }
+		////            kind=ValueParameterExpressionKind
+		////            arg=MixTupleExpressionList
+		////            ')'
+		////        )*
+		////
+		////        // '->' element
+		////        ( { fmlExpr::ValueElementSpecification.parent=current }
+		////            kind=ValueArrowFieldExpressionKind
+		////            element=[fmlCommon::NamedElement|ESIdentifier]
+		////
+		////            // '.' element
+		////            ( { fmlExpr::ValueElementSpecification.parent=current }
+		////                kind=ValueDotFieldExpressionKind
+		////                element=[fmlCommon::NamedElement|ESIdentifier]
+		////
+		////            // '[' index ',' ... ',' index ']'
+		////            | { fmlExpr::ValueElementSpecification.parent=current }
+		////                kind=ValueIndexExpressionKind
+		////                arg=PositionalTupleExpressionList
+		////                ']'
+		////
+		////            // '(' parameter ',' ... ',' parameter ')'
+		////            | { fmlExpr::ValueElementSpecification.parent=current }
+		////                kind=ValueParameterExpressionKind
+		////                arg=MixTupleExpressionList
+		////                ')'
+		////            )*
+		////        )?
+		////    ;
+		//enum ValueDotFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+		//    : field='.'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
 		//field='.'
@@ -23055,13 +27306,14 @@
 		//'.'
 		public Keyword getFieldFullStopKeyword_0() { return cFieldFullStopKeyword_0; }
 	}
-	public class ValueColonFieldExpressionKindElements extends AbstractEnumRuleElementFinder {
+	public class ValueColonFieldExpressionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ValueColonFieldExpressionKind");
 		private final EnumLiteralDeclaration cFieldEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cFieldColonKeyword_0 = (Keyword)cFieldEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum ValueColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-		//	field=':';
+		//enum ValueColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+		//    : field=':'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
 		//field=':'
@@ -23070,13 +27322,14 @@
 		//':'
 		public Keyword getFieldColonKeyword_0() { return cFieldColonKeyword_0; }
 	}
-	public class ValueDoubleColonFieldExpressionKindElements extends AbstractEnumRuleElementFinder {
+	public class ValueDoubleColonFieldExpressionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ValueDoubleColonFieldExpressionKind");
 		private final EnumLiteralDeclaration cFieldEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cFieldColonColonKeyword_0 = (Keyword)cFieldEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum ValueDoubleColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-		//	field='::';
+		//enum ValueDoubleColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+		//    : field='::'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
 		//field='::'
@@ -23085,13 +27338,14 @@
 		//'::'
 		public Keyword getFieldColonColonKeyword_0() { return cFieldColonColonKeyword_0; }
 	}
-	public class ValueArrowFieldExpressionKindElements extends AbstractEnumRuleElementFinder {
+	public class ValueArrowFieldExpressionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ValueArrowFieldExpressionKind");
 		private final EnumLiteralDeclaration cFieldEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cFieldHyphenMinusGreaterThanSignKeyword_0 = (Keyword)cFieldEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum ValueArrowFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-		//	field='->';
+		//enum ValueArrowFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+		//    : field='->'
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
 		//field='->'
@@ -23100,13 +27354,14 @@
 		//'->'
 		public Keyword getFieldHyphenMinusGreaterThanSignKeyword_0() { return cFieldHyphenMinusGreaterThanSignKeyword_0; }
 	}
-	public class ValueIndexExpressionKindElements extends AbstractEnumRuleElementFinder {
+	public class ValueIndexExpressionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ValueIndexExpressionKind");
 		private final EnumLiteralDeclaration cIndexEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cIndexLeftSquareBracketKeyword_0 = (Keyword)cIndexEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum ValueIndexExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-		//	index='[';
+		//enum ValueIndexExpressionKind returns fmlExpr::ValueElementSpecificationKind
+		//    : index='['
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
 		//index='['
@@ -23115,13 +27370,14 @@
 		//'['
 		public Keyword getIndexLeftSquareBracketKeyword_0() { return cIndexLeftSquareBracketKeyword_0; }
 	}
-	public class ValueParameterExpressionKindElements extends AbstractEnumRuleElementFinder {
+	public class ValueParameterExpressionKindElements extends AbstractElementFinder.AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.efm.formalml.xtext.FormalML.ValueParameterExpressionKind");
 		private final EnumLiteralDeclaration cParameterEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cParameterLeftParenthesisKeyword_0 = (Keyword)cParameterEnumLiteralDeclaration.eContents().get(0);
 		
-		//enum ValueParameterExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-		//	parameter='(';
+		//enum ValueParameterExpressionKind returns fmlExpr::ValueElementSpecificationKind
+		//    : parameter='('
+		//    ;
 		public EnumRule getRule() { return rule; }
 		
 		//parameter='('
@@ -23797,9 +28053,10 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Main Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Xlia fmlSpec::XliaModel:
-	//	prolog=XliaPrologObject
-	//	system=XliaSystem;
+	//Xlia returns fmlSpec::XliaModel
+	//    : prolog = XliaPrologObject
+	//          system = XliaSystem
+	//    ;
 	public XliaElements getXliaAccess() {
 		return pXlia;
 	}
@@ -23808,11 +28065,14 @@
 		return getXliaAccess().getRule();
 	}
 	
-	//XliaPrologObject fmlSpec::XliaObject:
-	//	name=('@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity')
-	//	'<'
-	//	elements+=XliaPrologAttribute '>:'
-	//	elements+=XliaOptionObject?;
+	//XliaPrologObject returns fmlSpec::XliaObject
+	//    : name=( '@FormalML' | '@xfml' | '@fml' | '@xlia' | '@xfsp' | '@diversity' )
+	//        '<'
+	//        ( elements+=XliaPrologAttribute )
+	////        ( ',' elements+=XliaPrologAttribute )+
+	//        '>:'
+	//        ( elements += XliaOptionObject )?
+	//    ;
 	public XliaPrologObjectElements getXliaPrologObjectAccess() {
 		return pXliaPrologObject;
 	}
@@ -23821,9 +28081,12 @@
 		return getXliaPrologObjectAccess().getRule();
 	}
 	
-	//XliaPrologAttribute fmlSpec::XliaAttribute:
-	//	name=('system' | 'package') (',' 'version:'?
-	//	value=(LiteralFloatExpression | LiteralStringExpression))?;
+	//XliaPrologAttribute returns fmlSpec::XliaAttribute
+	//    : name=( 'system' | 'package' )
+	//        ( ',' ( 'version:' )?
+	//            value=( LiteralFloatExpression | LiteralStringExpression )
+	//        )?
+	//    ;
 	public XliaPrologAttributeElements getXliaPrologAttributeAccess() {
 		return pXliaPrologAttribute;
 	}
@@ -23833,18 +28096,19 @@
 	}
 	
 	////XliaPrologAttribute returns XliaAttribute
-	////	: (name = 'model')?    value=XliaModelKind
-	////	| (name = 'version')?
-	////		value=( LiteralFloatExpression | LiteralStringExpression )
-	////	;
+	////    : (name = 'model')?    value=XliaModelKind
+	////    | (name = 'version')?
+	////        value=( LiteralFloatExpression | LiteralStringExpression )
+	////    ;
 	////
 	////XliaModelKind returns fmlExpr::LiteralStringExpression
-	////	: value=( 'system' | 'package' )
-	////	;
-	//XliaOptionObject fmlSpec::XliaObject:
-	//	name='@option' '{'
-	//	elements+=XliaNamedElement*
-	//	'}';
+	////    : value=( 'system' | 'package' )
+	////    ;
+	//XliaOptionObject returns fmlSpec::XliaObject
+	//    : name='@option'  '{'
+	//        ( elements+=XliaNamedElement )*
+	//      '}'
+	//    ;
 	public XliaOptionObjectElements getXliaOptionObjectAccess() {
 		return pXliaOptionObject;
 	}
@@ -23853,10 +28117,11 @@
 		return getXliaOptionObjectAccess().getRule();
 	}
 	
-	//XliaNamedElement fmlSpec::XliaNamedElement:
-	//	XliaObject
-	//	| XliaSection
-	//	| XliaAttribute;
+	//XliaNamedElement returns fmlSpec::XliaNamedElement
+	//    : XliaObject
+	//    | XliaSection
+	//    | XliaAttribute
+	//    ;
 	public XliaNamedElementElements getXliaNamedElementAccess() {
 		return pXliaNamedElement;
 	}
@@ -23865,10 +28130,11 @@
 		return getXliaNamedElementAccess().getRule();
 	}
 	
-	//XliaObject fmlSpec::XliaObject:
-	//	name=XLIA_ID '{'
-	//	elements+=XliaNamedElement*
-	//	'}';
+	//XliaObject returns fmlSpec::XliaObject
+	//    : name=XLIA_ID '{'
+	//        ( elements+=XliaNamedElement )*
+	//      '}'
+	//    ;
 	public XliaObjectElements getXliaObjectAccess() {
 		return pXliaObject;
 	}
@@ -23877,10 +28143,11 @@
 		return getXliaObjectAccess().getRule();
 	}
 	
-	//XliaSection fmlSpec::XliaSection:
-	//	name=XLIA_ID '['
-	//	elements+=XliaAttribute*
-	//	']';
+	//XliaSection returns fmlSpec::XliaSection
+	//    : name=XLIA_ID '['
+	//        ( elements+=XliaAttribute )*
+	//      ']'
+	//    ;
 	public XliaSectionElements getXliaSectionAccess() {
 		return pXliaSection;
 	}
@@ -23889,8 +28156,9 @@
 		return getXliaSectionAccess().getRule();
 	}
 	
-	//XliaAttribute fmlSpec::XliaAttribute:
-	//	name=XLIA_ID '=' value=Expression ';';
+	//XliaAttribute returns fmlSpec::XliaAttribute
+	//    : name=XLIA_ID '=' value=Expression ';'
+	//    ;
 	public XliaAttributeElements getXliaAttributeAccess() {
 		return pXliaAttribute;
 	}
@@ -23902,8 +28170,9 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Primitive Value
 	//////////////////////////////////////////////////////////////////////////////////
-	//EBoolean ecore::EBoolean:
-	//	'true' | 'false';
+	//EBoolean returns ecore::EBoolean
+	//    : 'true' | 'false'
+	//    ;
 	public EBooleanElements getEBooleanAccess() {
 		return pEBoolean;
 	}
@@ -23912,15 +28181,16 @@
 		return getEBooleanAccess().getRule();
 	}
 	
+	//// Comment @Override for Eclipse/Neon compatibility
 	//@Override
-	//terminal INT returns ecore::EInt:
-	//	'0'..'9'+;
+	//terminal INT returns ecore::EInt: ('0'..'9')+;
 	public TerminalRule getINTRule() {
 		return tINT;
 	}
 	
-	//EInt ecore::EInt:
-	//	'-'? INT;
+	//EInt returns ecore::EInt
+	//    : '-'? INT
+	//    ;
 	public EIntElements getEIntAccess() {
 		return pEInt;
 	}
@@ -23929,8 +28199,9 @@
 		return getEIntAccess().getRule();
 	}
 	
-	//EInteger ecore::ELong:
-	//	'-'? INT;
+	//EInteger returns ecore::ELong
+	//    : '-'? INT
+	//    ;
 	public EIntegerElements getEIntegerAccess() {
 		return pEInteger;
 	}
@@ -23939,9 +28210,9 @@
 		return getEIntegerAccess().getRule();
 	}
 	
-	//EFloat ecore::EFloat:
-	//	'-'? INT? '.' INT //(('E'|'e') '-'? INT)?
-	//;
+	//EFloat returns ecore::EFloat
+	//    : '-'? INT? '.' INT //(('E'|'e') '-'? INT)?
+	//    ;
 	public EFloatElements getEFloatAccess() {
 		return pEFloat;
 	}
@@ -23950,9 +28221,9 @@
 		return getEFloatAccess().getRule();
 	}
 	
-	//EDouble ecore::EDouble:
-	//	'-'? INT? '.' INT //(('E'|'e') '-'? INT)?
-	//;
+	//EDouble returns ecore::EDouble
+	//    : '-'? INT? '.' INT //(('E'|'e') '-'? INT)?
+	//    ;
 	public EDoubleElements getEDoubleAccess() {
 		return pEDouble;
 	}
@@ -23961,14 +28232,16 @@
 		return getEDoubleAccess().getRule();
 	}
 	
-	//terminal CHARACTER:
-	//	"'" . "'";
+	//terminal CHARACTER
+	//    : "'" . "'"
+	//    ;
 	public TerminalRule getCHARACTERRule() {
 		return tCHARACTER;
 	}
 	
-	//ECharacter ecore::EChar:
-	//	CHARACTER;
+	//ECharacter returns ecore::EChar
+	//    : CHARACTER
+	//    ;
 	public ECharacterElements getECharacterAccess() {
 		return pECharacter;
 	}
@@ -23977,8 +28250,9 @@
 		return getECharacterAccess().getRule();
 	}
 	
-	//EString:
-	//	STRING;
+	//EString returns ecore::EString
+	//    : STRING
+	//    ;
 	public EStringElements getEStringAccess() {
 		return pEString;
 	}
@@ -23987,14 +28261,15 @@
 		return getEStringAccess().getRule();
 	}
 	
-	//terminal OFFSET:
-	//	'$' INT? ':';
+	//terminal OFFSET
+	//    : '$' INT? ':'
+	//    ;
 	public TerminalRule getOFFSETRule() {
 		return tOFFSET;
 	}
 	
-	//EOffset:
-	//	OFFSET;
+	//EOffset returns ecore::EString
+	//    : OFFSET ;
 	public EOffsetElements getEOffsetAccess() {
 		return pEOffset;
 	}
@@ -24004,59 +28279,60 @@
 	}
 	
 	////QualifiedName returns ecore::EString
-	////	: ID ( '[' ID ']' )? '.' ID ( '[' ID ']' )? | ID
-	////	;
-	//ReservedKeyWord:
-	//	'package' | 'system' | 'machine' | 'executable'
-	//	| 'vertex' | 'pseudostate'
-	//	| 'state' | 'statemachine'
-	//	| 'macro' | 'routine'
-	//	| 'procedure' | 'transition'
-	//	| 'public' | 'private' | 'protected'
-	//	| 'static' | 'final'
-	//	| 'volatile' | 'transient'
-	//	| 'model' | 'prototype' | 'instance'
-	//	| 'timed' | 'timed#dense' | 'timed#discrete'
-	//	| 'unsafe' | 'input_enabled'
-	//	| 'port' | 'signal' | 'message'
-	//	| 'buffer' | 'channel' | 'via'
-	//	| 'var' | 'val' | 'const'
-	//	| 'input' | 'in' | 'inout'
-	//	| 'output' | 'out' | 'return'
-	//	| 'simple' | 'start' | 'final'
-	//	| 'initial' | 'terminal' | 'junction'
-	//	| 'choice' | 'fork' | 'join'
-	//	| 'dhistory' | 'shistory'
-	//	| 'route' | 'connector' | 'connect'
-	//	| 'env' | 'rdv' | 'multirdv'
-	//	| 'buffer' | 'unicast' | 'anycast'
-	//	| 'multicast' | 'broadcast'
-	//	| 'boolean' | 'bool'
-	//	| 'char' | 'string'
-	//	| 'integer' | 'int'
-	//	| 'uinteger' | 'uint'
-	//	| 'rational' | 'rat'
-	//	| 'urational' | 'urat'
-	//	| 'time' | 'clock'
-	//	| 'float' | 'double' | 'real'
-	//	| 'ufloat' | 'udouble' | 'ureal'
-	//	| 'interval' | 'enum' | 'struct' | 'union'
-	//	| 'vector' | 'rvector' | 'list'
-	//	| 'set' | 'bag' | 'multiset'
-	//	| 'fifo' | 'lifo'
-	//	| 'guard' | 'tguard'
-	//	| 'event' | 'checksat'
-	//	| 'break' | 'continue' | 'exit' | 'init'
-	//	| 'destroy' | 'stop' | 'abort' | 'restart'
-	//	| 'suspend' | 'resume' | 'wait'
-	//	| 'disable' | 'enable'
-	//	| 'schedule' | 'irun' | 'run' | 'rtc'
-	//	| 'call' | 'new' | 'ctor' | 'newfresh'
-	//	| 'this' | 'self' | 'parent' | 'super'
-	//	| 'null'
-	//	| '#model' | '#instance' | '#static' | '#dynamic'
-	//	| '#runtime' | '#static#instance' | '#dynamic#instance'
-	//	| '#prototype' | '#dynamic#prototype';
+	////    : ID ( '[' ID ']' )? '.' ID ( '[' ID ']' )? | ID
+	////    ;
+	//ReservedKeyWord
+	//    : 'package'   | 'system'      | 'machine'  | 'executable'
+	//    | 'vertex'    | 'pseudostate'
+	//    | 'state'     | 'statemachine'
+	//    | 'macro'     | 'routine'
+	//    | 'procedure' | 'transition'
+	//    | 'public'    | 'private'     | 'protected'
+	//    | 'static'    | 'final'
+	//    | 'volatile'  | 'transient'
+	//    | 'model'     | 'prototype'   | 'instance'
+	//    | 'timed'     | 'timed#dense' | 'timed#discrete'
+	//    | 'unsafe'    | 'input_enabled'
+	//    | 'port'      | 'signal'      | 'message'
+	//    | 'buffer'    | 'channel'     | 'via'
+	//    | 'var'       | 'val'         | 'const'
+	//    | 'input'     | 'in'          | 'inout'
+	//    | 'output'    | 'out'         | 'return'
+	//    | 'simple'    | 'start'       | 'final'
+	//    | 'initial'   | 'terminal'    | 'junction'
+	//    | 'choice'    | 'fork'        | 'join'
+	//    | 'dhistory'  | 'shistory'
+	//    | 'route'     | 'connector'   | 'connect'
+	//    | 'env'       | 'rdv'         | 'multirdv'
+	//    | 'buffer'    | 'unicast'     | 'anycast'
+	//    | 'multicast' | 'broadcast'
+	//    | 'boolean'   | 'bool'
+	//    | 'char'      | 'string'
+	//    | 'integer'   | 'int'
+	//    | 'uinteger'  | 'uint'
+	//    | 'rational'  | 'rat'
+	//    | 'urational' | 'urat'
+	//    | 'time'      | 'clock'
+	//    | 'float'     | 'double'      | 'real'
+	//    | 'ufloat'    | 'udouble'     | 'ureal'
+	//    | 'interval'  | 'enum'        | 'struct' | 'union'
+	//    | 'vector'    | 'rvector'     | 'list'
+	//    | 'set'       | 'bag'         | 'multiset'
+	//    | 'fifo'      | 'lifo'
+	//    | 'guard'     | 'tguard'
+	//    | 'event'     | 'checksat'
+	//    | 'break'     | 'continue'    | 'exit'   | 'init'
+	//    | 'destroy'   | 'stop'        | 'abort'  | 'restart'
+	//    | 'suspend'   | 'resume'      | 'wait'
+	//    | 'disable'   | 'enable'
+	//    | 'schedule'  | 'irun'        | 'run'    | 'rtc'
+	//    | 'call'      | 'new'         | 'ctor'   | 'newfresh'
+	//    | 'this'      | 'self'        | 'parent' | 'super'
+	//    | 'null'
+	//    | '#model'    | '#instance'        | '#static'   |  '#dynamic'
+	//    | '#runtime'  | '#static#instance' | '#dynamic#instance'
+	//    | '#prototype'| '#dynamic#prototype'
+	//    ;
 	public ReservedKeyWordElements getReservedKeyWordAccess() {
 		return pReservedKeyWord;
 	}
@@ -24065,14 +28341,16 @@
 		return getReservedKeyWordAccess().getRule();
 	}
 	
-	//terminal XLIA_ID:
-	//	('a'..'z' | 'A'..'Z' | '_' | '#') ('a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '#')*;
+	//terminal XLIA_ID
+	//    : ('a'..'z'|'A'..'Z'|'_'|'#') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'#')*
+	//    ;
 	public TerminalRule getXLIA_IDRule() {
 		return tXLIA_ID;
 	}
 	
-	//ESIdentifier:
-	//	XLIA_ID;
+	//ESIdentifier returns ecore::EString
+	//    : XLIA_ID
+	//    ;
 	public ESIdentifierElements getESIdentifierAccess() {
 		return pESIdentifier;
 	}
@@ -24081,8 +28359,9 @@
 		return getESIdentifierAccess().getRule();
 	}
 	
-	//ESUfid:
-	//	('spec::' | '::')? XLIA_ID (('.' | ':') XLIA_ID)*;
+	//ESUfid returns ecore::EString
+	//    : ( 'spec::' | '::' )?  XLIA_ID  ( ( '.' | ':' ) XLIA_ID )*
+	//    ;
 	public ESUfidElements getESUfidAccess() {
 		return pESUfid;
 	}
@@ -24091,8 +28370,9 @@
 		return getESUfidAccess().getRule();
 	}
 	
-	//UnrestrictedName:
-	//	STRING;
+	//UnrestrictedName returns ecore::EString
+	//    : STRING
+	//    ;
 	public UnrestrictedNameElements getUnrestrictedNameAccess() {
 		return pUnrestrictedName;
 	}
@@ -24101,8 +28381,11 @@
 		return getUnrestrictedNameAccess().getRule();
 	}
 	
-	//QualifiedName fmlCommon::QualifiedName:
-	//	UnqualifiedName ('::' nameBinding+=NameBinding)* ('.' nameBinding+=NameBinding)*;
+	//QualifiedName returns fmlCommon::QualifiedName
+	//    : UnqualifiedName
+	//        ( '::' nameBinding += NameBinding )*
+	//        ( '.' nameBinding += NameBinding )*
+	//    ;
 	public QualifiedNameElements getQualifiedNameAccess() {
 		return pQualifiedName;
 	}
@@ -24111,9 +28394,13 @@
 		return getQualifiedNameAccess().getRule();
 	}
 	
-	//PotentiallyAmbiguousQualifiedName fmlCommon::QualifiedName:
-	//	UnqualifiedName ('::' nameBinding+=NameBinding)* (isAmbiguous?='.' nameBinding+=NameBinding ('.'
-	//	nameBinding+=NameBinding)*)?;
+	//PotentiallyAmbiguousQualifiedName returns fmlCommon::QualifiedName
+	//    : UnqualifiedName
+	//        ( '::' nameBinding += NameBinding )*
+	//        ( isAmbiguous ?= '.' nameBinding += NameBinding
+	//            ( '.' nameBinding += NameBinding )*
+	//        )?
+	//    ;
 	public PotentiallyAmbiguousQualifiedNameElements getPotentiallyAmbiguousQualifiedNameAccess() {
 		return pPotentiallyAmbiguousQualifiedName;
 	}
@@ -24122,8 +28409,9 @@
 		return getPotentiallyAmbiguousQualifiedNameAccess().getRule();
 	}
 	
-	//ColonQualifiedName fmlCommon::QualifiedName:
-	//	UnqualifiedName ('::' nameBinding+=NameBinding)+;
+	//ColonQualifiedName returns fmlCommon::QualifiedName
+	//    : UnqualifiedName ( '::' nameBinding += NameBinding )+
+	//    ;
 	public ColonQualifiedNameElements getColonQualifiedNameAccess() {
 		return pColonQualifiedName;
 	}
@@ -24132,8 +28420,9 @@
 		return getColonQualifiedNameAccess().getRule();
 	}
 	
-	//DotQualifiedName fmlCommon::QualifiedName:
-	//	UnqualifiedName ('.' nameBinding+=NameBinding)+;
+	//DotQualifiedName returns fmlCommon::QualifiedName
+	//    : UnqualifiedName ( '.' nameBinding += NameBinding )+
+	//    ;
 	public DotQualifiedNameElements getDotQualifiedNameAccess() {
 		return pDotQualifiedName;
 	}
@@ -24142,8 +28431,9 @@
 		return getDotQualifiedNameAccess().getRule();
 	}
 	
-	//UnqualifiedName fmlCommon::QualifiedName:
-	//	nameBinding+=NameBinding;
+	//UnqualifiedName returns fmlCommon::QualifiedName
+	//    : nameBinding += NameBinding
+	//    ;
 	public UnqualifiedNameElements getUnqualifiedNameAccess() {
 		return pUnqualifiedName;
 	}
@@ -24152,8 +28442,9 @@
 		return getUnqualifiedNameAccess().getRule();
 	}
 	
-	//NameBinding:
-	//	XLIA_ID;
+	//NameBinding
+	//    : XLIA_ID
+	//    ;
 	public NameBindingElements getNameBindingAccess() {
 		return pNameBinding;
 	}
@@ -24162,8 +28453,12 @@
 		return getNameBindingAccess().getRule();
 	}
 	
-	//enum VisibilityKind returns fmlCommon::VisibilityKind:
-	//	public | private | protected | package;
+	//enum VisibilityKind returns fmlCommon::VisibilityKind
+	//    : public   ='public'
+	//    | private  ='private'
+	//    | protected='protected'
+	//    | package  ='package'
+	//    ;
 	public VisibilityKindElements getVisibilityKindAccess() {
 		return eVisibilityKind;
 	}
@@ -24172,26 +28467,27 @@
 		return getVisibilityKindAccess().getRule();
 	}
 	
-	//ModelOfComputationKing:
-	//	'and'
-	//	| 'or'
-	//	| 'start'
-	//	| '#STF'
-	//	| '#STS'
-	//	| '#DF'
-	//	| '#alt'
-	//	| '#opt'
-	//	| '#loop'
-	//	| '#break'
-	//	| '#par'
-	//	| '#strict'
-	//	| '#weak'
-	//	| '#seq'
-	//	| '#critical'
-	//	| '#ignore'
-	//	| '#consider'
-	//	| '#assert'
-	//	| '#neg';
+	//ModelOfComputationKing
+	//    : 'and'
+	//    | 'or'
+	//    | 'start'
+	//    | '#STF'
+	//    | '#STS'
+	//    | '#DF'
+	//    | '#alt'
+	//    | '#opt'
+	//    | '#loop'
+	//    | '#break'
+	//    | '#par'
+	//    | '#strict'
+	//    | '#weak'
+	//    | '#seq'
+	//    | '#critical'
+	//    | '#ignore'
+	//    | '#consider'
+	//    | '#assert'
+	//    | '#neg'
+	//    ;
 	public ModelOfComputationKingElements getModelOfComputationKingAccess() {
 		return pModelOfComputationKing;
 	}
@@ -24200,9 +28496,15 @@
 		return getModelOfComputationKingAccess().getRule();
 	}
 	
-	//enum DesignKind returns fmlInfra::DesignKind:
-	//	model | prototype | model='#model'
-	//	| prototype='#prototype';
+	//////////////////////////////////////////////////////////////////////////////////
+	//// Machine PropertyDefinition Rules
+	//////////////////////////////////////////////////////////////////////////////////
+	//enum DesignKind returns fmlInfra::DesignKind
+	//    : model     = 'model'
+	//    | prototype = 'prototype'
+	//    | model     = '#model'
+	//    | prototype = '#prototype'
+	//    ;
 	public DesignKindElements getDesignKindAccess() {
 		return eDesignKind;
 	}
@@ -24211,16 +28513,17 @@
 		return getDesignKindAccess().getRule();
 	}
 	
-	//DesignDebugTrace:
-	//	'#model'
-	//	| '#instance'
-	//	| '#static'
-	//	| '#dynamic'
-	//	| '#runtime'
-	//	| '#static#instance'
-	//	| '#dynamic#instance'
-	//	| '#prototype'
-	//	| '#dynamic#prototype';
+	//DesignDebugTrace
+	//    : '#model'
+	//    | '#instance'
+	//    | '#static'
+	//    | '#dynamic'
+	//    | '#runtime'
+	//    | '#static#instance'
+	//    | '#dynamic#instance'
+	//    | '#prototype'
+	//    | '#dynamic#prototype'
+	//    ;
 	public DesignDebugTraceElements getDesignDebugTraceAccess() {
 		return pDesignDebugTrace;
 	}
@@ -24229,8 +28532,9 @@
 		return getDesignDebugTraceAccess().getRule();
 	}
 	
-	//enum DesignInstanceKind returns fmlInfra::DesignKind:
-	//	instance;
+	//enum DesignInstanceKind returns fmlInfra::DesignKind
+	//    : instance  = 'instance'
+	//    ;
 	public DesignInstanceKindElements getDesignInstanceKindAccess() {
 		return eDesignInstanceKind;
 	}
@@ -24239,65 +28543,116 @@
 		return getDesignInstanceKindAccess().getRule();
 	}
 	
-	//XliaSystem fmlInfra::XliaSystem:
-	//	(visibility=VisibilityKind?
-	//	& timed?='timed'?
-	//	& dense_timed?='timed#dense'?
-	//	& discrete_timed?='timed#discrete'?
-	//	& input_enabled?='input_enabled'?
-	//	& unsafe?='unsafe'?)
-	//	'system' ('<' 'moc:'? ('and' | 'or') '>')?
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'{' (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*
-	//	('@property:' (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*
-	//	| '@public:' (port+=PortPublic
-	//	| signal+=SignalPublic
-	//	| buffer+=BufferPublic
-	//	| channel+=ChannelPublic
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPublic
-	//	| variable+=VariablePublic)*
-	//	| '@protected:' (port+=PortProtected
-	//	| signal+=SignalProtected
-	//	| buffer+=BufferProtected
-	//	| channel+=ChannelProtected
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionProtected
-	//	| variable+=VariableProtected)*
-	//	| '@private:' (port+=PortPrivate
-	//	| signal+=SignalPrivate
-	//	| buffer+=BufferPrivate
-	//	| channel+=ChannelPrivate
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPrivate
-	//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-	//	| '@procedure:' procedure+=Procedure+)*
-	//	| (routine+=Routine | procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock
-	//	| instance+=InstanceMachine)+
-	//	| '@model:' machine+=AnyMachineBlock*
-	//	| '@prototype:' machine+=AnyMachineBlock*
-	//	| '@instance:' instance+=InstanceMachine*)* ('@behavior:' behavior+=Behavior+
-	//	| '@statemachine:' behavior+=Statemachine+)*
-	//	main=MoeBehavior
-	//	//		// optional unnamed section for property full declaration / definition
-	//	//		propertyPart=PropertyPart
-	//	//
-	//	//		compositePart=CompositePart
-	//	//
-	//	//		behaviorPart=BehaviorPart
-	//	'}';
+	//XliaSystem returns fmlInfra::XliaSystem
+	//    : ( ( visibility=VisibilityKind )?
+	//        & ( timed?='timed' )?
+	//        & ( dense_timed?='timed#dense' )?
+	//        & ( discrete_timed?='timed#discrete' )?
+	//        & ( input_enabled ?= 'input_enabled' )?
+	//        & ( unsafe ?= 'unsafe' )?
+	//        )
+	//        'system' ('<' ( 'moc:' )? ( 'and' | 'or' ) '>')?
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        '{'
+	//        ( // optional unnamed section for property full declaration / definition
+	////            ( 'port'
+	////                ( port+=PortImpl
+	////                | '{' ( port+=PortImpl )+ '}'
+	////                )
+	////            | 'signal'
+	////                ( signal+=SignalImpl
+	////                | '{' ( signal+=SignalImpl )+ '}'
+	////                )
+	////            | 'buffer'
+	////                ( buffer+=BufferImpl
+	////                | '{' ( buffer+=BufferImpl )+ '}'
+	////                )
+	////            | channel+=Channel
+	////            | 'type'
+	////                ( typedef+=TypeDefinitionImpl
+	////                | '{' ( typedef+=TypeDefinitionImpl )+ '}'
+	////                )
+	////            | 'var'
+	////                ( property+=VariableImpl
+	////                | '{' ( variable+=VariableImpl )+ '}'
+	////                )
+	////            | ( 'val' | 'const' )
+	////                ( variable+=VariableImpl
+	////                | '{' ( variable+=VariableImpl )+ '}'
+	////                )
+	////            | variable+=Variable
+	////            )*
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        )
+	//        ( '@property:'
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        | '@public:'
+	//            ( port+=PortPublic
+	//            | signal+=SignalPublic
+	//            | buffer+=BufferPublic
+	//            | channel+=ChannelPublic
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPublic
+	//            | variable+=VariablePublic
+	//            )*
+	//        | '@protected:'
+	//            ( port+=PortProtected
+	//            | signal+=SignalProtected
+	//            | buffer+=BufferProtected
+	//            | channel+=ChannelProtected
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionProtected
+	//            | variable+=VariableProtected
+	//            )*
+	//        | '@private:'
+	//            ( port+=PortPrivate
+	//            | signal+=SignalPrivate
+	//            | buffer+=BufferPrivate
+	//            | channel+=ChannelPrivate
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPrivate
+	//            | variable+=VariablePrivate
+	//            )*
+	//        )*
+	//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+	//          | '@procedure:' ( procedure+=Procedure )+
+	//          )*
+	//        | ( routine+=Routine | procedure+=Procedure )+
+	//        )
+	//        ( ( '@composite:' | '@machine:' )
+	//            ( machine +=AnyMachineBlock
+	//            | instance+=InstanceMachine
+	//            )+
+	//        | '@model:'     ( machine +=AnyMachineBlock )*
+	//        | '@prototype:' ( machine +=AnyMachineBlock )*
+	//        | '@instance:'  ( instance+=InstanceMachine )*
+	//        )*
+	//        ( '@behavior:'     ( behavior+=Behavior )+
+	//        | '@statemachine:' ( behavior+=Statemachine )+
+	//        )*
+	//        main=MoeBehavior
+	////        // optional unnamed section for property full declaration / definition
+	////        propertyPart=PropertyPart
+	////
+	////        compositePart=CompositePart
+	////
+	////        behaviorPart=BehaviorPart
+	//        '}'
+	//    ;
 	public XliaSystemElements getXliaSystemAccess() {
 		return pXliaSystem;
 	}
@@ -24306,9 +28661,10 @@
 		return getXliaSystemAccess().getRule();
 	}
 	
-	//AnyMachineBlock fmlInfra::Machine:
-	//	MachineBlock
-	//	| Statemachine;
+	//AnyMachineBlock returns fmlInfra::Machine
+	//    : MachineBlock
+	//    | Statemachine
+	//    ;
 	public AnyMachineBlockElements getAnyMachineBlockAccess() {
 		return pAnyMachineBlock;
 	}
@@ -24317,12 +28673,15 @@
 		return getAnyMachineBlockAccess().getRule();
 	}
 	
-	//InstanceMachine fmlInfra::InstanceMachine:
-	//	'instance' ('machine' | 'statemachine')?
-	//	'<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' (slot+=SlotParameter (',' slot+=SlotParameter)*)? ')')? ('{'
-	//	(slot+=SlotProperty ';')* '}'
-	//	| ';');
+	//InstanceMachine returns fmlInfra::InstanceMachine
+	//    : 'instance' ( 'machine' | 'statemachine' ) ?
+	//        '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
+	//        ( '{'  ( slot+=SlotProperty ';' )*  '}'
+	//        | ';'
+	//        )
+	//    ;
 	public InstanceMachineElements getInstanceMachineAccess() {
 		return pInstanceMachine;
 	}
@@ -24331,8 +28690,11 @@
 		return getInstanceMachineAccess().getRule();
 	}
 	
-	//SlotParameter fmlInfra::SlotProperty:
-	//	xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier] (':' | '=' | ':=' | '::=') value=Expression;
+	//SlotParameter returns fmlInfra::SlotProperty
+	//    : ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+	////      | umlProperty=[uml::Property|ESIdentifier]
+	//      )  ( ':' | '='  | ':=' | '::=' )  value=Expression
+	//    ;
 	public SlotParameterElements getSlotParameterAccess() {
 		return pSlotParameter;
 	}
@@ -24341,8 +28703,11 @@
 		return getSlotParameterAccess().getRule();
 	}
 	
-	//SlotProperty fmlInfra::SlotProperty:
-	//	xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier] ('=' | ':' | ':=' | '::=') value=Expression;
+	//SlotProperty returns fmlInfra::SlotProperty
+	//    : ( xliaProperty=[fmlInfra::PropertyDefinition|ESIdentifier]
+	////      | umlProperty=[uml::Property|ESIdentifier]
+	//      ) ( '='  | ':' | ':=' | '::=' )  value=Expression
+	//    ;
 	public SlotPropertyElements getSlotPropertyAccess() {
 		return pSlotProperty;
 	}
@@ -24351,66 +28716,94 @@
 		return getSlotPropertyAccess().getRule();
 	}
 	
-	//MachineBlock fmlInfra::Machine:
-	//	(visibility=VisibilityKind?
-	//	& timed?='timed'?
-	//	& dense_timed?='timed#dense'?
-	//	& discrete_timed?='timed#discrete'?
-	//	& input_enabled?='input_enabled'?
-	//	& lifeline?='lifeline'?
-	//	& design=DesignKind?) ('machine' | 'executable') ('<' ('moc:'? ModelOfComputationKing)? ('instance:' '[' ('+' | '*'
-	//	| 'init:' EInteger 'max:' EInteger) ']')? '>')?
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'{' (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*
-	//	('@property:' (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*
-	//	| '@public:' (port+=PortPublic
-	//	| signal+=SignalPublic
-	//	| buffer+=BufferPublic
-	//	| channel+=ChannelPublic
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPublic
-	//	| variable+=VariablePublic)*
-	//	| '@protected:' (port+=PortProtected
-	//	| signal+=SignalProtected
-	//	| buffer+=BufferProtected
-	//	| channel+=ChannelProtected
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionProtected
-	//	| variable+=VariableProtected)*
-	//	| '@private:' (port+=PortPrivate
-	//	| signal+=SignalPrivate
-	//	| buffer+=BufferPrivate
-	//	| channel+=ChannelPrivate
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPrivate
-	//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-	//	| '@procedure:' procedure+=Procedure+)*
-	//	| (routine+=Routine | procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock
-	//	| instance+=InstanceMachine)+
-	//	| '@model:' machine+=AnyMachineBlock*
-	//	| '@prototype:' machine+=AnyMachineBlock*
-	//	| '@instance:' instance+=InstanceMachine*)* ('@behavior:' behavior+=Behavior+
-	//	| '@statemachine:' behavior+=Statemachine+)*
-	//	main=MoeBehavior
-	//	//		// optional unnamed section for property full declaration / definition
-	//	//		propertyPart=PropertyPart
-	//	//
-	//	//		compositePart=CompositePart
-	//	//
-	//	//		behaviorPart=BehaviorPart
-	//	'}';
+	//MachineBlock returns fmlInfra::Machine
+	//    : ( ( visibility=VisibilityKind )?
+	//        & ( timed?='timed' )?
+	//        & ( dense_timed?='timed#dense' )?
+	//        & ( discrete_timed?='timed#discrete' )?
+	//        & ( input_enabled ?= 'input_enabled' )?
+	//        & ( lifeline?='lifeline' )?
+	//        & ( design=DesignKind )?
+	//        )
+	//        ( 'machine' | 'executable' )
+	//        ( '<' ( ( 'moc:' )?  ModelOfComputationKing )?
+	//            ( 'instance:' '[' ( '+' | '*'
+	//                | ( 'init:' EInteger 'max:' EInteger ) ) ']' )? '>'
+	//        )?
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        '{'
+	//        ( // optional unnamed section for property full declaration / definition
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        )
+	//        ( '@property:'
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        | '@public:'
+	//            ( port+=PortPublic
+	//            | signal+=SignalPublic
+	//            | buffer+=BufferPublic
+	//            | channel+=ChannelPublic
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPublic
+	//            | variable+=VariablePublic
+	//            )*
+	//        | '@protected:'
+	//            ( port+=PortProtected
+	//            | signal+=SignalProtected
+	//            | buffer+=BufferProtected
+	//            | channel+=ChannelProtected
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionProtected
+	//            | variable+=VariableProtected
+	//            )*
+	//        | '@private:'
+	//            ( port+=PortPrivate
+	//            | signal+=SignalPrivate
+	//            | buffer+=BufferPrivate
+	//            | channel+=ChannelPrivate
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPrivate
+	//            | variable+=VariablePrivate
+	//            )*
+	//        )*
+	//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+	//          | '@procedure:' ( procedure+=Procedure )+
+	//          )*
+	//        | ( routine+=Routine | procedure+=Procedure )+
+	//        )
+	//        ( ( '@composite:' | '@machine:' )
+	//            ( machine +=AnyMachineBlock
+	//            | instance+=InstanceMachine
+	//            )+
+	//        | '@model:'     ( machine +=AnyMachineBlock )*
+	//        | '@prototype:' ( machine +=AnyMachineBlock )*
+	//        | '@instance:'  ( instance+=InstanceMachine )*
+	//        )*
+	//        ( '@behavior:'     ( behavior+=Behavior )+
+	//        | '@statemachine:' ( behavior+=Statemachine )+
+	//        )*
+	//        main=MoeBehavior
+	////        // optional unnamed section for property full declaration / definition
+	////        propertyPart=PropertyPart
+	////
+	////        compositePart=CompositePart
+	////
+	////        behaviorPart=BehaviorPart
+	//        '}'
+	//    ;
 	public MachineBlockElements getMachineBlockAccess() {
 		return pMachineBlock;
 	}
@@ -24419,53 +28812,83 @@
 		return getMachineBlockAccess().getRule();
 	}
 	
-	//PropertyPart fmlInfra::PropertyPart:
-	//	{fmlInfra::PropertyPart} ('@parameter:' ('input' (parameter+=ParameterInput
-	//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-	//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-	//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-	//	| '{' parameter+=ParameterReturn+ '}'))*
-	//	| (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*) ('@input:'
-	//	parameter+=ParameterInput*
-	//	| '@inout:'
-	//	parameter+=ParameterInout*
-	//	| '@output:'
-	//	parameter+=ParameterOutput*
-	//	| '@return:'
-	//	parameter+=ParameterReturn*)* ('@property:' (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*
-	//	| '@public:' (port+=PortPublic
-	//	| signal+=SignalPublic
-	//	| buffer+=BufferPublic
-	//	| channel+=ChannelPublic
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPublic
-	//	| variable+=VariablePublic)*
-	//	| '@protected:' (port+=PortProtected
-	//	| signal+=SignalProtected
-	//	| buffer+=BufferProtected
-	//	| channel+=ChannelProtected
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionProtected
-	//	| variable+=VariableProtected)*
-	//	| '@private:' (port+=PortPrivate
-	//	| signal+=SignalPrivate
-	//	| buffer+=BufferPrivate
-	//	| channel+=ChannelPrivate
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPrivate
-	//	| variable+=VariablePrivate)*)*;
+	//PropertyPart returns fmlInfra::PropertyPart
+	//    : {fmlInfra::PropertyPart}
+	//        ( '@parameter:'
+	//            ( 'input'
+	//                ( parameter+=ParameterInput
+	//                | '{' ( parameter+=ParameterInput )+ '}'
+	//                )
+	//            | 'inout'
+	//                ( parameter+=ParameterInout
+	//                | '{' ( parameter+=ParameterInout )+ '}'
+	//                )
+	//            | 'output'
+	//                ( parameter+=ParameterOutput
+	//                | '{' ( parameter+=ParameterOutput )+ '}'
+	//                )
+	//            | 'return'
+	//                ( parameter+=ParameterReturn
+	//                | '{' ( parameter+=ParameterReturn )+ '}'
+	//                )
+	//            )*
+	//        | // optional unnamed section for property full declaration / definition
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        )
+	//        ( '@input:'
+	//            ( parameter+=ParameterInput  )*
+	//        | '@inout:'
+	//            ( parameter+=ParameterInout  )*
+	//        | '@output:'
+	//            ( parameter+=ParameterOutput )*
+	//        | '@return:'
+	//            ( parameter+=ParameterReturn )*
+	//        )*
+	//        ( '@property:'
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        | '@public:'
+	//            ( port+=PortPublic
+	//            | signal+=SignalPublic
+	//            | buffer+=BufferPublic
+	//            | channel+=ChannelPublic
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPublic
+	//            | variable+=VariablePublic
+	//            )*
+	//        | '@protected:'
+	//            ( port+=PortProtected
+	//            | signal+=SignalProtected
+	//            | buffer+=BufferProtected
+	//            | channel+=ChannelProtected
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionProtected
+	//            | variable+=VariableProtected
+	//            )*
+	//        | '@private:'
+	//            ( port+=PortPrivate
+	//            | signal+=SignalPrivate
+	//            | buffer+=BufferPrivate
+	//            | channel+=ChannelPrivate
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPrivate
+	//            | variable+=VariablePrivate
+	//            )*
+	//        )*
+	//    ;
 	public PropertyPartElements getPropertyPartAccess() {
 		return pPropertyPart;
 	}
@@ -24474,14 +28897,22 @@
 		return getPropertyPartAccess().getRule();
 	}
 	
-	//CompositePart fmlInfra::CompositePart:
-	//	{fmlInfra::CompositePart} ((('@routine:' | '@macro:') routine+=Routine+
-	//	| '@procedure:' procedure+=Procedure+)*
-	//	| (routine+=Routine | procedure+=Procedure)+) (('@composite:' | '@machine:') (machine+=AnyMachineBlock
-	//	| instance+=InstanceMachine)+
-	//	| '@model:' machine+=AnyMachineBlock*
-	//	| '@prototype:' machine+=AnyMachineBlock*
-	//	| '@instance:' instance+=InstanceMachine*)*;
+	//CompositePart returns fmlInfra::CompositePart
+	//    : {fmlInfra::CompositePart}
+	//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+	//          | '@procedure:' ( procedure+=Procedure )+
+	//          )*
+	//        | ( routine+=Routine | procedure+=Procedure )+
+	//        )
+	//        ( ( '@composite:' | '@machine:' )
+	//            ( machine +=AnyMachineBlock
+	//            | instance+=InstanceMachine
+	//            )+
+	//        | '@model:'     ( machine +=AnyMachineBlock )*
+	//        | '@prototype:' ( machine +=AnyMachineBlock )*
+	//        | '@instance:'  ( instance+=InstanceMachine )*
+	//        )*
+	//    ;
 	public CompositePartElements getCompositePartAccess() {
 		return pCompositePart;
 	}
@@ -24490,10 +28921,13 @@
 		return getCompositePartAccess().getRule();
 	}
 	
-	//BehaviorPart fmlInfra::BehaviorPart:
-	//	{fmlInfra::BehaviorPart} ('@behavior:' behavior+=Behavior+
-	//	| '@statemachine:' behavior+=Statemachine+)*
-	//	main=MoeBehavior;
+	//BehaviorPart returns fmlInfra::BehaviorPart
+	//    : {fmlInfra::BehaviorPart}
+	//        ( '@behavior:'     ( behavior+=Behavior )+
+	//        | '@statemachine:' ( behavior+=Statemachine )+
+	//        )*
+	//        main=MoeBehavior
+	//    ;
 	public BehaviorPartElements getBehaviorPartAccess() {
 		return pBehaviorPart;
 	}
@@ -24505,63 +28939,113 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Procedure View Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Procedure fmlInfra::Procedure:
-	//	visibility=VisibilityKind?
-	//	'procedure' ('<' 'moc:'? ('and' | 'or') '>')?
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? (('(' (parameter+=FunctionalParameter (','
-	//	parameter+=FunctionalParameter)*)? ')')? ('-->' (parameter+=FormalParameter
-	//	| '(' parameter+=FormalParameter (',' parameter+=FormalParameter)* ')'))?)?
-	//	'{' ('@parameter:' ('input' (parameter+=ParameterInput
-	//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-	//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-	//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-	//	| '{' parameter+=ParameterReturn+ '}'))*
-	//	| (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*) ('@input:'
-	//	parameter+=ParameterInput*
-	//	| '@inout:'
-	//	parameter+=ParameterInout*
-	//	| '@output:'
-	//	parameter+=ParameterOutput*
-	//	| '@return:'
-	//	parameter+=ParameterReturn*)* ('@property:' (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*
-	//	| '@public:' (port+=PortPublic
-	//	| signal+=SignalPublic
-	//	| buffer+=BufferPublic
-	//	| channel+=ChannelPublic
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPublic
-	//	| variable+=VariablePublic)*
-	//	| '@protected:' (port+=PortProtected
-	//	| signal+=SignalProtected
-	//	| buffer+=BufferProtected
-	//	| channel+=ChannelProtected
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionProtected
-	//	| variable+=VariableProtected)*
-	//	| '@private:' (port+=PortPrivate
-	//	| signal+=SignalPrivate
-	//	| buffer+=BufferPrivate
-	//	| channel+=ChannelPrivate
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPrivate
-	//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-	//	| '@procedure:' procedure+=Procedure+)*
-	//	| (routine+=Routine | procedure+=Procedure)+) execution=ProcedureExecution?
-	//	//		& ( computation=ModelOfComputation )?
-	//	//		& ( interaction=ModelOfInteraction )?
-	//	'}';
+	//Procedure returns fmlInfra::Procedure
+	//    : ( visibility=VisibilityKind )?
+	//        'procedure' ( '<' ( 'moc:' )?  ( 'and' | 'or' ) '>' )?
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( ( '(' ( parameter+=FunctionalParameter
+	//            ( ',' parameter+=FunctionalParameter )* )? ')' )?
+	//             ( '-->'
+	//                 ( parameter+=FormalParameter
+	//                 | '('  parameter+=FormalParameter
+	//                     ( ',' parameter+=FormalParameter )* ')'
+	//                 )
+	//             )?
+	//         )?
+	//        '{'
+	//        ( '@parameter:'
+	//            ( 'input'
+	//                ( parameter+=ParameterInput
+	//                | '{' ( parameter+=ParameterInput )+ '}'
+	//                )
+	//            | 'inout'
+	//                ( parameter+=ParameterInout
+	//                | '{' ( parameter+=ParameterInout )+ '}'
+	//                )
+	//            | 'output'
+	//                ( parameter+=ParameterOutput
+	//                | '{' ( parameter+=ParameterOutput )+ '}'
+	//                )
+	//            | 'return'
+	//                ( parameter+=ParameterReturn
+	//                | '{' ( parameter+=ParameterReturn )+ '}'
+	//                )
+	//            )*
+	//        | // optional unnamed section for property full declaration / definition
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        )
+	//        ( '@input:'
+	//            ( parameter+=ParameterInput  )*
+	//        | '@inout:'
+	//            ( parameter+=ParameterInout  )*
+	//        | '@output:'
+	//            ( parameter+=ParameterOutput )*
+	//        | '@return:'
+	//            ( parameter+=ParameterReturn )*
+	//        )*
+	//        ( '@property:'
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        | '@public:'
+	//            ( port+=PortPublic
+	//            | signal+=SignalPublic
+	//            | buffer+=BufferPublic
+	//            | channel+=ChannelPublic
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPublic
+	//            | variable+=VariablePublic
+	//            )*
+	//        | '@protected:'
+	//            ( port+=PortProtected
+	//            | signal+=SignalProtected
+	//            | buffer+=BufferProtected
+	//            | channel+=ChannelProtected
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionProtected
+	//            | variable+=VariableProtected
+	//            )*
+	//        | '@private:'
+	//            ( port+=PortPrivate
+	//            | signal+=SignalPrivate
+	//            | buffer+=BufferPrivate
+	//            | channel+=ChannelPrivate
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPrivate
+	//            | variable+=VariablePrivate
+	//            )*
+	//        )*
+	//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+	//          | '@procedure:' ( procedure+=Procedure )+
+	//          )*
+	//        | ( routine+=Routine | procedure+=Procedure )+
+	//        )
+	////        // optional unnamed section for property full declaration / definition
+	////        propertyPart=PropertyPart
+	////
+	////        compositePart=CompositePart
+	////        ( region+=StatemachineRegion
+	////        | ( region+=StatemachineNamedRegion )+
+	////        | region+=StatemachineRegionLite
+	////        )?
+	//        ( ( execution=ProcedureExecution )?
+	////        & ( computation=ModelOfComputation )?
+	////        & ( interaction=ModelOfInteraction )?
+	//        )
+	//        '}'
+	//    ;
 	public ProcedureElements getProcedureAccess() {
 		return pProcedure;
 	}
@@ -24570,9 +29054,13 @@
 		return getProcedureAccess().getRule();
 	}
 	
-	//ProcedureExecution fmlInfra::ModelOfExecution:
-	//	{fmlInfra::ModelOfExecution} '@moe:'? ((('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
-	//	& ('@run' runRoutine=moeRoutine)?);
+	//ProcedureExecution returns fmlInfra::ModelOfExecution
+	//    : { fmlInfra::ModelOfExecution }
+	//        ( '@moe:' )?
+	//        ( ( ( '@schedule' | '@xschedule' )  scheduleRoutine=moeRoutine )?
+	//        & ( '@run'  runRoutine=moeRoutine )?
+	//        )
+	//    ;
 	public ProcedureExecutionElements getProcedureExecutionAccess() {
 		return pProcedureExecution;
 	}
@@ -24584,8 +29072,9 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Behavior View Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Behavior fmlInfra::Behavior:
-	//	Statemachine;
+	//Behavior returns fmlInfra::Behavior
+	//    : Statemachine
+	//    ;
 	public BehaviorElements getBehaviorAccess() {
 		return pBehavior;
 	}
@@ -24594,16 +29083,23 @@
 		return getBehaviorAccess().getRule();
 	}
 	
-	//MoeBehavior fmlInfra::Behavior:
-	//	{fmlInfra::Behavior} ('@local:' (port+=PortPrivate
-	//	| signal+=SignalPrivate
-	//	| buffer+=BufferPrivate
-	//	| channel+=ChannelPrivate
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPrivate
-	//	| variable+=VariablePrivate)*)? (execution=ModelOfExecution?
-	//	//		& ( computation=ModelOfComputation )?
-	//	& interaction=ModelOfInteraction?);
+	//MoeBehavior returns fmlInfra::Behavior
+	//    : {fmlInfra::Behavior}
+	//        ( '@local:'
+	//            ( port+=PortPrivate
+	//            | signal+=SignalPrivate
+	//            | buffer+=BufferPrivate
+	//            | channel+=ChannelPrivate
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPrivate
+	//            | variable+=VariablePrivate
+	//            )*
+	//        )?
+	//        ( ( execution=ModelOfExecution )?
+	////        & ( computation=ModelOfComputation )?
+	//        & ( interaction=ModelOfInteraction )?
+	//        )
+	//    ;
 	public MoeBehaviorElements getMoeBehaviorAccess() {
 		return pMoeBehavior;
 	}
@@ -24615,74 +29111,125 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Statemachine Behavior View Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Statemachine fmlStmchn::Statemachine:
-	//	{fmlStmchn::Statemachine} (visibility=VisibilityKind?
-	//	& timed?='timed'?
-	//	& dense_timed?='timed#dense'?
-	//	& discrete_timed?='timed#discrete'?
-	//	& input_enabled?='input_enabled'?
-	//	& lifeline?='lifeline'?
-	//	& design=DesignKind?)
-	//	'statemachine' ('<' 'moc:'? ModelOfComputationKing '>')?
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'{' ('@parameter:' ('input' (parameter+=ParameterInput
-	//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-	//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-	//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-	//	| '{' parameter+=ParameterReturn+ '}'))*
-	//	| (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*) ('@input:'
-	//	parameter+=ParameterInput*
-	//	| '@inout:'
-	//	parameter+=ParameterInout*
-	//	| '@output:'
-	//	parameter+=ParameterOutput*
-	//	| '@return:'
-	//	parameter+=ParameterReturn*)* ('@property:' (port+=Port
-	//	| signal+=Signal
-	//	| buffer+=Buffer
-	//	| channel+=Channel
-	//	| typedef+=TypeDefinition
-	//	| function+=Function
-	//	| variable+=Variable)*
-	//	| '@public:' (port+=PortPublic
-	//	| signal+=SignalPublic
-	//	| buffer+=BufferPublic
-	//	| channel+=ChannelPublic
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPublic
-	//	| variable+=VariablePublic)*
-	//	| '@protected:' (port+=PortProtected
-	//	| signal+=SignalProtected
-	//	| buffer+=BufferProtected
-	//	| channel+=ChannelProtected
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionProtected
-	//	| variable+=VariableProtected)*
-	//	| '@private:' (port+=PortPrivate
-	//	| signal+=SignalPrivate
-	//	| buffer+=BufferPrivate
-	//	| channel+=ChannelPrivate
-	//	| typedef+=TypeDefinition
-	//	| function+=FunctionPrivate
-	//	| variable+=VariablePrivate)*)* ((('@routine:' | '@macro:') routine+=Routine+
-	//	| '@procedure:' procedure+=Procedure+)*
-	//	| (routine+=Routine | procedure+=Procedure)+) (('@statemachine:' machine+=Statemachine+
-	//	| '@composite:' machine+=AnyMachineBlock*
-	//	| '@model:' machine+=AnyMachineBlock*
-	//	| '@prototype:' machine+=AnyMachineBlock*
-	//	| '@instance:' instance+=InstanceMachine*)+
-	//	| region+=StatemachineRegion
-	//	| region+=StatemachineNamedRegion+
-	//	| region+=StatemachineRegionLite) (execution=ModelOfExecution?
-	//	//		& ( computation=ModelOfComputation )?
-	//	& interaction=ModelOfInteraction?)
-	//	'}';
+	//Statemachine returns fmlStmchn::Statemachine
+	//    : { fmlStmchn::Statemachine }
+	//        ( ( visibility=VisibilityKind )?
+	//        & ( timed?='timed' )?
+	//        & ( dense_timed?='timed#dense' )?
+	//        & ( discrete_timed?='timed#discrete' )?
+	//        & ( input_enabled ?= 'input_enabled' )?
+	//        & ( lifeline?='lifeline' )?
+	//        & ( design=DesignKind )?
+	//        )
+	//        'statemachine' ( '<' ( 'moc:' )? ModelOfComputationKing '>' )?
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        '{'
+	//        ( '@parameter:'  //( parameter+=Parameter )+
+	//            ( 'input'
+	//                ( parameter+=ParameterInput
+	//                | '{' ( parameter+=ParameterInput )+ '}'
+	//                )
+	//            | 'inout'
+	//                ( parameter+=ParameterInout
+	//                | '{' ( parameter+=ParameterInout )+ '}'
+	//                )
+	//            | 'output'
+	//                ( parameter+=ParameterOutput
+	//                | '{' ( parameter+=ParameterOutput )+ '}'
+	//                )
+	//            | 'return'
+	//                ( parameter+=ParameterReturn
+	//                | '{' ( parameter+=ParameterReturn )+ '}'
+	//                )
+	//            )*
+	//        | // optional unnamed section for property full declaration / definition
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        )
+	//        ( '@input:'
+	//            ( parameter+=ParameterInput  )*
+	//        | '@inout:'
+	//            ( parameter+=ParameterInout  )*
+	//        | '@output:'
+	//            ( parameter+=ParameterOutput )*
+	//        | '@return:'
+	//            ( parameter+=ParameterReturn )*
+	//        )*
+	//        ( '@property:'
+	//            ( port+=Port
+	//            | signal+=Signal
+	//            | buffer+=Buffer
+	//            | channel+=Channel
+	//            | typedef+=TypeDefinition
+	//            | function+=Function
+	//            | variable+=Variable
+	//            )*
+	//        | '@public:'
+	//            ( port+=PortPublic
+	//            | signal+=SignalPublic
+	//            | buffer+=BufferPublic
+	//            | channel+=ChannelPublic
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPublic
+	//            | variable+=VariablePublic
+	//            )*
+	//        | '@protected:'
+	//            ( port+=PortProtected
+	//            | signal+=SignalProtected
+	//            | buffer+=BufferProtected
+	//            | channel+=ChannelProtected
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionProtected
+	//            | variable+=VariableProtected
+	//            )*
+	//        | '@private:'
+	//            ( port+=PortPrivate
+	//            | signal+=SignalPrivate
+	//            | buffer+=BufferPrivate
+	//            | channel+=ChannelPrivate
+	//            | typedef+=TypeDefinition
+	//            | function+=FunctionPrivate
+	//            | variable+=VariablePrivate
+	//            )*
+	//        )*
+	//        ( ( ( '@routine:' | '@macro:' ) ( routine+=Routine )+
+	//          | '@procedure:' ( procedure+=Procedure )+
+	//          )*
+	//        | ( routine+=Routine  | procedure+=Procedure )+
+	//        )
+	////        ( ( '@composite:' | '@statemachine:' )  ( machine +=Statemachine )+
+	//        ( ( '@statemachine:' ( machine +=Statemachine    )+
+	//            | '@composite:'  ( machine +=AnyMachineBlock )*
+	//            | '@model:'      ( machine +=AnyMachineBlock )*
+	//            | '@prototype:'  ( machine +=AnyMachineBlock )*
+	//            | '@instance:'   ( instance+=InstanceMachine )*
+	//            )+
+	//        | region+=StatemachineRegion
+	//        | ( region+=StatemachineNamedRegion )+
+	//        | region+=StatemachineRegionLite
+	//        )
+	////        // optional unnamed section for property full declaration / definition
+	////        propertyPart=PropertyPart
+	////
+	////        compositePart=CompositePart
+	////
+	////        ( region+=StatemachineRegion
+	////        | ( region+=StatemachineNamedRegion )+
+	////
+	////        | region+=StatemachineRegionLite
+	////        )
+	//        ( ( execution=ModelOfExecution )?
+	////        & ( computation=ModelOfComputation )?
+	//        & ( interaction=ModelOfInteraction )?
+	//        )
+	//        '}'
+	//    ;
 	public StatemachineElements getStatemachineAccess() {
 		return pStatemachine;
 	}
@@ -24691,9 +29238,13 @@
 		return getStatemachineAccess().getRule();
 	}
 	
-	//StatemachineRegion fmlStmchn::Region:
-	//	{fmlStmchn::Region} ('@state:' | '@region:') (vertex+=State
-	//	| vertex+=Pseudostate)+;
+	//StatemachineRegion returns fmlStmchn::Region
+	//    : {fmlStmchn::Region}
+	//        ( '@state:' | '@region:' )
+	//        ( vertex+=State
+	//        | vertex+=Pseudostate
+	//        )+
+	//    ;
 	public StatemachineRegionElements getStatemachineRegionAccess() {
 		return pStatemachineRegion;
 	}
@@ -24702,11 +29253,14 @@
 		return getStatemachineRegionAccess().getRule();
 	}
 	
-	//StatemachineNamedRegion fmlStmchn::Region:
-	//	{fmlStmchn::Region}
-	//	'@region(' ('id:' | 'name:')? name=ESIdentifier
-	//	unrestrictedName=UnrestrictedName? '):' (vertex+=State
-	//	| vertex+=Pseudostate)+;
+	//StatemachineNamedRegion returns fmlStmchn::Region
+	//    : {fmlStmchn::Region}
+	//        '@region(' ( 'id:' | 'name:' )?  name=ESIdentifier
+	//            ( unrestrictedName=UnrestrictedName )?  '):'
+	//        ( vertex+=State
+	//        | vertex+=Pseudostate
+	//        )+
+	//    ;
 	public StatemachineNamedRegionElements getStatemachineNamedRegionAccess() {
 		return pStatemachineNamedRegion;
 	}
@@ -24715,8 +29269,9 @@
 		return getStatemachineNamedRegionAccess().getRule();
 	}
 	
-	//StatemachineRegionLite fmlStmchn::Region:
-	//	(vertex+=State | vertex+=Pseudostate)+;
+	//StatemachineRegionLite returns fmlStmchn::Region
+	//    : ( vertex+=State | vertex+=Pseudostate )+
+	//    ;
 	public StatemachineRegionLiteElements getStatemachineRegionLiteAccess() {
 		return pStatemachineRegionLite;
 	}
@@ -24728,11 +29283,12 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// State Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//State fmlStmchn::State:
-	//	CompositeState
-	//	| StartState
-	//	| SimpleState
-	//	| FinalState;
+	//State returns fmlStmchn::State
+	//    : CompositeState
+	//    | StartState
+	//    | SimpleState
+	//    | FinalState
+	//    ;
 	public StateElements getStateAccess() {
 		return pState;
 	}
@@ -24744,16 +29300,26 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// CompositeState Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//CompositeState fmlStmchn::State:
-	//	{fmlStmchn::State} composite?='state' '<' 'moc:'? ('or' | orthogonal?='and') '>'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('{' ((region+=StatemachineRegion
-	//	| region+=StatemachineNamedRegion+) & ('@moe:' moe=moeCompositeStateRoutines)?
-	//	& '@transition:' transition+=Transition*
-	//	| region+=StatemachineRegionLite*
-	//	& moe=moeCompositeStateRoutines?
-	//	& transition+=Transition*)
-	//	'}'
-	//	| ';');
+	//CompositeState returns fmlStmchn::State
+	//    : { fmlStmchn::State }
+	//        composite?='state' '<' ( 'moc:' )? ( 'or' | orthogonal?='and' ) '>'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( '{'
+	//            ( ( ( region+=StatemachineRegion
+	//                | ( region+=StatemachineNamedRegion )+
+	//                )
+	//              & ( '@moe:' moe=moeCompositeStateRoutines )?
+	//              & '@transition:' ( transition+=Transition )*
+	//              )
+	//            | ( ( region+=StatemachineRegionLite )*
+	//              & ( moe=moeCompositeStateRoutines  )?
+	//              & ( transition+=Transition )*
+	//              )
+	//            )
+	//          '}'
+	//        | ';'
+	//        )
+	//    ;
 	public CompositeStateElements getCompositeStateAccess() {
 		return pCompositeState;
 	}
@@ -24762,16 +29328,19 @@
 		return getCompositeStateAccess().getRule();
 	}
 	
-	//moeCompositeStateRoutines fmlInfra::ModelOfExecution:
-	//	{fmlInfra::ModelOfExecution} (('@create' createRoutine=moeRoutine)?
-	//	& ('@init' initRoutine=moeRoutine)?
-	//	& ('@final' finalRoutine=moeRoutine)?
-	//	& ('@enable' enableRoutine=moeRoutine)?
-	//	& ('@disable' disableRoutine=moeRoutine)?
-	//	& ('@concurrency' concurrencyRoutine=moeRoutine)?
-	//	& (('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
-	//	& ('@irun' irunRoutine=moeRoutine)?
-	//	& ('@run' runRoutine=moeRoutine)?);
+	//moeCompositeStateRoutines returns fmlInfra::ModelOfExecution
+	//    : { fmlInfra::ModelOfExecution }
+	//    ( ( '@create' createRoutine=moeRoutine )?
+	//    & ( '@init'   initRoutine=moeRoutine   )?
+	//    & ( '@final'  finalRoutine=moeRoutine  )?
+	//    & ( '@enable'  enableRoutine=moeRoutine  )?
+	//    & ( '@disable' disableRoutine=moeRoutine )?
+	//    & ( '@concurrency' concurrencyRoutine=moeRoutine )?
+	//    & ( ( '@schedule' | '@xschedule' ) scheduleRoutine=moeRoutine )?
+	//    & ( '@irun' irunRoutine=moeRoutine )?
+	//    & ( '@run'  runRoutine=moeRoutine  )?
+	//    )
+	//    ;
 	public MoeCompositeStateRoutinesElements getMoeCompositeStateRoutinesAccess() {
 		return pMoeCompositeStateRoutines;
 	}
@@ -24783,12 +29352,24 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// SimpleState Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//SimpleState fmlStmchn::State:
-	//	{fmlStmchn::State} simple?='state' ('<' 'moc:'? 'simple' '>')?
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('{' (transition+=Transition*
-	//	& moe=moeSimpleStateRoutines?)
-	//	'}'
-	//	| ';');
+	//SimpleState returns fmlStmchn::State
+	//    : { fmlStmchn::State }
+	//    simple?='state' ( '<' ( 'moc:' )? 'simple' '>' )?
+	//    name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//    ( '{'
+	//        (
+	//            ( ( transition+=Transition    )*
+	//            & ( moe=moeSimpleStateRoutines )?
+	//            )
+	////        |
+	////            ( ( '@transition:'  ( transition+=Transition )* )?
+	////            & ( '@moe:'         moe=moeSimpleStateRoutines  )?
+	////            )
+	//        )
+	//      '}'
+	//    | ';'
+	//    )
+	//    ;
 	public SimpleStateElements getSimpleStateAccess() {
 		return pSimpleState;
 	}
@@ -24797,12 +29378,14 @@
 		return getSimpleStateAccess().getRule();
 	}
 	
-	//moeSimpleStateRoutines fmlInfra::ModelOfExecution:
-	//	{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)?
-	//	& ('@disable' disableRoutine=moeRoutine)?
-	//	& ('@irun' irunRoutine=moeRoutine)?
-	//	//	& ( '@run'  runRoutine=moeRoutine  )?
-	//);
+	//moeSimpleStateRoutines returns fmlInfra::ModelOfExecution
+	//    : { fmlInfra::ModelOfExecution }
+	//    ( ( '@enable'  enableRoutine=moeRoutine  )?
+	//    & ( '@disable' disableRoutine=moeRoutine )?
+	//    & ( '@irun' irunRoutine=moeRoutine )?
+	////    & ( '@run'  runRoutine=moeRoutine  )?
+	//    )
+	//    ;
 	public MoeSimpleStateRoutinesElements getMoeSimpleStateRoutinesAccess() {
 		return pMoeSimpleStateRoutines;
 	}
@@ -24814,12 +29397,26 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// StartState Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//StartState fmlStmchn::StartState:
-	//	{fmlStmchn::StartState} (simple?='state' '<' 'moc:'? 'start' '>' name=ESIdentifier
-	//	| simple?='#start') unrestrictedName=UnrestrictedName? ('{' (transition+=Transition*
-	//	& moe=moeStartStateRoutines?)
-	//	'}'
-	//	| ';');
+	//StartState returns fmlStmchn::StartState
+	//    : { fmlStmchn::StartState }
+	//    ( simple?='state' '<' ( 'moc:' )? 'start' '>' name=ESIdentifier
+	//    | simple?='#start'
+	//    )
+	//    ( unrestrictedName=UnrestrictedName )?
+	//    ( '{'
+	//        (
+	//            ( ( transition+=Transition    )*
+	//            & ( moe=moeStartStateRoutines )?
+	//            )
+	////        |
+	////            ( ( '@transition:'  ( transition+=Transition )* )?
+	////            & ( '@moe:'         moe=moeStartStateRoutines  )?
+	////            )
+	//        )
+	//      '}'
+	//    | ';'
+	//    )
+	//    ;
 	public StartStateElements getStartStateAccess() {
 		return pStartState;
 	}
@@ -24828,15 +29425,17 @@
 		return getStartStateAccess().getRule();
 	}
 	
-	//moeStartStateRoutines fmlInfra::ModelOfExecution:
-	//	{fmlInfra::ModelOfExecution} (('@create' createRoutine=moeRoutine)?
-	//	& ('@init' initRoutine=moeRoutine)?
-	//	& ('@final' finalRoutine=moeRoutine)?
-	//	& ('@enable' enableRoutine=moeRoutine)?
-	//	& ('@disable' disableRoutine=moeRoutine)?
-	//	& ('@irun' irunRoutine=moeRoutine)?
-	//	//	& ( '@run'  runRoutine=moeRoutine  )?
-	//);
+	//moeStartStateRoutines returns fmlInfra::ModelOfExecution
+	//    : { fmlInfra::ModelOfExecution }
+	//    ( ( '@create' createRoutine=moeRoutine )?
+	//    & ( '@init'   initRoutine=moeRoutine   )?
+	//    & ( '@final'  finalRoutine=moeRoutine  )?
+	//    & ( '@enable'  enableRoutine=moeRoutine  )?
+	//    & ( '@disable' disableRoutine=moeRoutine )?
+	//    & ( '@irun' irunRoutine=moeRoutine )?
+	////    & ( '@run'  runRoutine=moeRoutine  )?
+	//    )
+	//    ;
 	public MoeStartStateRoutinesElements getMoeStartStateRoutinesAccess() {
 		return pMoeStartStateRoutines;
 	}
@@ -24848,11 +29447,18 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// FinalState Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//FinalState fmlStmchn::FinalState:
-	//	{fmlStmchn::FinalState} (simple?='state' '<' 'moc:'? 'final' '>' name=ESIdentifier
-	//	| simple?='#final') unrestrictedName=UnrestrictedName? ('{' ('@moe:'? moe=moeFinalStateRoutines)?
-	//	'}'
-	//	| ';');
+	//FinalState returns fmlStmchn::FinalState
+	//    : { fmlStmchn::FinalState }
+	//    ( simple?='state' '<' ( 'moc:' )? 'final' '>' name=ESIdentifier
+	//    | simple?='#final'
+	//    )
+	//    ( unrestrictedName=UnrestrictedName )?
+	//    ( '{'
+	//        ( ( '@moe:' )?  moe=moeFinalStateRoutines )?
+	//      '}'
+	//    | ';'
+	//    )
+	//    ;
 	public FinalStateElements getFinalStateAccess() {
 		return pFinalState;
 	}
@@ -24861,11 +29467,13 @@
 		return getFinalStateAccess().getRule();
 	}
 	
-	//moeFinalStateRoutines fmlInfra::ModelOfExecution:
-	//	{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)?
-	//	& ('@final' finalRoutine=moeRoutine)?
-	//	//	& ( '@run'     runRoutine=moeRoutine    )?
-	//);
+	//moeFinalStateRoutines returns fmlInfra::ModelOfExecution
+	//    : { fmlInfra::ModelOfExecution }
+	//    ( ( '@enable'  enableRoutine=moeRoutine )?
+	//    & ( '@final'   finalRoutine=moeRoutine  )?
+	////    & ( '@run'     runRoutine=moeRoutine    )?
+	//    )
+	//    ;
 	public MoeFinalStateRoutinesElements getMoeFinalStateRoutinesAccess() {
 		return pMoeFinalStateRoutines;
 	}
@@ -24877,10 +29485,11 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Pseudostate Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Pseudostate fmlStmchn::Pseudostate:
-	//	PseudostateInitial
-	//	| EndingPseudostate
-	//	| OtherPseudostate;
+	//Pseudostate returns fmlStmchn::Pseudostate
+	//    : PseudostateInitial
+	//    | EndingPseudostate
+	//    | OtherPseudostate
+	//    ;
 	public PseudostateElements getPseudostateAccess() {
 		return pPseudostate;
 	}
@@ -24889,13 +29498,34 @@
 		return getPseudostateAccess().getRule();
 	}
 	
-	//OtherPseudostate fmlStmchn::Pseudostate:
-	//	{fmlStmchn::Pseudostate} ('state' | 'pseudostate') '<' 'moc:'? kind=PseudostateKind '>'
-	//	name=ESIdentifier
-	//	unrestrictedName=UnrestrictedName? ('{' (transition+=Transition*
-	//	& moe=moePseudotateRoutines?)
-	//	'}'
-	//	| ';');
+	//OtherPseudostate returns fmlStmchn::Pseudostate
+	//    : { fmlStmchn::Pseudostate }
+	//        ( 'state' | 'pseudostate' ) '<' ( 'moc:' )? kind=PseudostateKind '>'
+	//        name=ESIdentifier
+	//        ( unrestrictedName=UnrestrictedName )?
+	//        ( '{'
+	//        (
+	//            ( ( transition+=Transition    )*
+	//            & ( moe=moePseudotateRoutines )?
+	//            )
+	////        |
+	////            ( ( '@transition:'  ( transition+=Transition )* )?
+	////            & ( '@moe:'         moe=moePseudotateRoutines  )?
+	////            )
+	//        )
+	//          '}'
+	//        | ';'
+	//        )
+	////    | PseudostateInitial
+	////    | PseudostateTerminal
+	////    | PseudostateReturn
+	////    | PseudostateJunction
+	////    | PseudostateChoice
+	////    | PseudostateFork
+	////    | PseudostateJoin
+	////    | PseudostateDeepHistory
+	////    | PseudostateShallowHistory
+	//    ;
 	public OtherPseudostateElements getOtherPseudostateAccess() {
 		return pOtherPseudostate;
 	}
@@ -24904,9 +29534,12 @@
 		return getOtherPseudostateAccess().getRule();
 	}
 	
-	//moePseudotateRoutines fmlInfra::ModelOfExecution:
-	//	{fmlInfra::ModelOfExecution} (('@enable' enableRoutine=moeRoutine)?
-	//	& ('@disable' disableRoutine=moeRoutine)?);
+	//moePseudotateRoutines returns fmlInfra::ModelOfExecution
+	//    : { fmlInfra::ModelOfExecution }
+	//    ( ( '@enable'  enableRoutine=moeRoutine  )?
+	//    & ( '@disable' disableRoutine=moeRoutine )?
+	//    )
+	//    ;
 	public MoePseudotateRoutinesElements getMoePseudotateRoutinesAccess() {
 		return pMoePseudotateRoutines;
 	}
@@ -24915,20 +29548,20 @@
 		return getMoePseudotateRoutinesAccess().getRule();
 	}
 	
-	//enum PseudostateKind returns fmlStmchn::PseudostateKind:
-	//	Junction='junction'
-	//	| Choice='choice'
-	//	| EntryPoint='entryPoint'
-	//	| ExitPoint='exitPoint'
-	//	//	| Initial ='initial'
-	//	//		
-	//	//	| Terminal='terminal'
-	//	//	| Return   ='return'
-	//
-	//	| Fork='fork'
-	//	| Join='join'
-	//	| DeepHistory='dhistory'
-	//	| ShallowHistory='shistory';
+	//enum PseudostateKind returns fmlStmchn::PseudostateKind
+	//    : Junction='junction'
+	//    | Choice  ='choice'
+	//    | EntryPoint='entryPoint'
+	//    | ExitPoint  ='exitPoint'
+	////    | Initial ='initial'
+	////
+	////    | Terminal='terminal'
+	////    | Return   ='return'
+	//    | Fork='fork'
+	//    | Join='join'
+	//    | DeepHistory   ='dhistory'
+	//    | ShallowHistory='shistory'
+	//    ;
 	public PseudostateKindElements getPseudostateKindAccess() {
 		return ePseudostateKind;
 	}
@@ -24937,12 +29570,18 @@
 		return getPseudostateKindAccess().getRule();
 	}
 	
-	//PseudostateInitial fmlStmchn::Pseudostate:
-	//	{fmlStmchn::Pseudostate} (('state' | 'pseudostate')
-	//	'<' 'moc:'? kind=PseudostateInitialKind '>'
-	//	name=(ESIdentifier | '#initial' | '#init') | name=('#initial' | '#init')) unrestrictedName=UnrestrictedName? ('{'
-	//	('@transition:'? transition+=Transition*)? '}'
-	//	| ';');
+	//PseudostateInitial returns fmlStmchn::Pseudostate
+	//    : { fmlStmchn::Pseudostate }
+	//    ( ( 'state' | 'pseudostate' )
+	//        '<' ( 'moc:' )? kind=PseudostateInitialKind '>'
+	//        name=(ESIdentifier | '#initial' | '#init' )
+	//    | name=( '#initial' | '#init' )
+	//    )
+	//    ( unrestrictedName=UnrestrictedName )?
+	//    ( '{'  ( ( '@transition:' )?  ( transition+=Transition )* )?  '}'
+	//    | ';'
+	//    )
+	//    ;
 	public PseudostateInitialElements getPseudostateInitialAccess() {
 		return pPseudostateInitial;
 	}
@@ -24951,8 +29590,9 @@
 		return getPseudostateInitialAccess().getRule();
 	}
 	
-	//enum PseudostateInitialKind returns fmlStmchn::PseudostateKind:
-	//	Initial='initial';
+	//enum PseudostateInitialKind returns fmlStmchn::PseudostateKind
+	//    : Initial ='initial'
+	//    ;
 	public PseudostateInitialKindElements getPseudostateInitialKindAccess() {
 		return ePseudostateInitialKind;
 	}
@@ -24961,10 +29601,14 @@
 		return getPseudostateInitialKindAccess().getRule();
 	}
 	
-	//EndingPseudostate fmlStmchn::Pseudostate:
-	//	{fmlStmchn::Pseudostate} ('state' | 'pseudostate') '<' 'moc:'? kind=EndingPseudostateKind '>'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('{' ('@moe:'? moe=moeFinalStateRoutines)? '}'
-	//	| ';');
+	//EndingPseudostate returns fmlStmchn::Pseudostate
+	//    : { fmlStmchn::Pseudostate }
+	//    ( 'state' | 'pseudostate' ) '<' ( 'moc:' )? kind=EndingPseudostateKind '>'
+	//    name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//    ( '{'  ( ( '@moe:' )?  moe=moeFinalStateRoutines )?  '}'
+	//    | ';'
+	//    )
+	//    ;
 	public EndingPseudostateElements getEndingPseudostateAccess() {
 		return pEndingPseudostate;
 	}
@@ -24973,9 +29617,10 @@
 		return getEndingPseudostateAccess().getRule();
 	}
 	
-	//enum EndingPseudostateKind returns fmlStmchn::PseudostateKind:
-	//	Terminal='terminal'
-	//	| Return='return';
+	//enum EndingPseudostateKind returns fmlStmchn::PseudostateKind
+	//    : Terminal='terminal'
+	//    | Return='return'
+	//    ;
 	public EndingPseudostateKindElements getEndingPseudostateKindAccess() {
 		return eEndingPseudostateKind;
 	}
@@ -24987,8 +29632,9 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Section Model Of Computation Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//ModelOfComputation fmlInfra::ModelOfComputation:
-	//	{fmlInfra::ModelOfComputation};
+	//ModelOfComputation returns fmlInfra::ModelOfComputation
+	//    : { fmlInfra::ModelOfComputation }
+	//    ;
 	public ModelOfComputationElements getModelOfComputationAccess() {
 		return pModelOfComputation;
 	}
@@ -25000,18 +29646,22 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Section Model Of Execution Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//ModelOfExecution fmlInfra::ModelOfExecution:
-	//	{fmlInfra::ModelOfExecution}
-	//	'@moe:'
-	//	routine+=Routine* (('@create' createRoutine=moeRoutine)?
-	//	& ('@init' initRoutine=moeRoutine)?
-	//	& ('@final' finalRoutine=moeRoutine)?
-	//	& ('@enable' enableRoutine=moeRoutine)?
-	//	& ('@disable' disableRoutine=moeRoutine)?
-	//	& ('@concurrency' concurrencyRoutine=moeRoutine)?
-	//	& (('@schedule' | '@xschedule') scheduleRoutine=moeRoutine)?
-	//	& ('@irun' irunRoutine=moeRoutine)?
-	//	& ('@run' runRoutine=moeRoutine)?) routine+=Routine*;
+	//ModelOfExecution returns fmlInfra::ModelOfExecution
+	//    : { fmlInfra::ModelOfExecution }
+	//    '@moe:'
+	//    ( routine+=Routine )*
+	//    ( ( '@create'  createRoutine=moeRoutine )?
+	//    & ( '@init'    initRoutine=moeRoutine   )?
+	//    & ( '@final'   finalRoutine=moeRoutine  )?
+	//    & ( '@enable'  enableRoutine=moeRoutine  )?
+	//    & ( '@disable' disableRoutine=moeRoutine )?
+	//    & ( '@concurrency' concurrencyRoutine=moeRoutine )?
+	//    & ( ( '@schedule' | '@xschedule' )    scheduleRoutine=moeRoutine )?
+	//    & ( '@irun' irunRoutine=moeRoutine )?
+	//    & ( '@run'  runRoutine=moeRoutine  )?
+	//    )
+	//    ( routine+=Routine )*
+	//    ;
 	public ModelOfExecutionElements getModelOfExecutionAccess() {
 		return pModelOfExecution;
 	}
@@ -25020,10 +29670,16 @@
 		return getModelOfExecutionAccess().getRule();
 	}
 	
-	//moeRoutine fmlInfra::Routine:
-	//	{fmlInfra::Routine} ('(' parameterSet=FormalParameterSet? ')')? ('->' (resultSet=FormalParameterSet
-	//	| '(' resultSet=FormalParameterSet ')'))?
-	//	bodyBlock=BlockStatement;
+	//moeRoutine returns fmlInfra::Routine
+	//    : { fmlInfra::Routine }
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        ('->'
+	//            (     resultSet=FormalParameterSet
+	//            | '(' resultSet=FormalParameterSet ')'
+	//            )
+	//        )?
+	//        bodyBlock=BlockStatement
+	//    ;
 	public MoeRoutineElements getMoeRoutineAccess() {
 		return pMoeRoutine;
 	}
@@ -25032,13 +29688,18 @@
 		return getMoeRoutineAccess().getRule();
 	}
 	
-	//Routine fmlInfra::Routine:
-	//	visibility=VisibilityKind? macro?='macro'? DesignDebugTrace*
-	//	'routine'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')? ('-->'
-	//	(resultSet=FormalParameterSet
-	//	| '(' resultSet=FormalParameterSet ')'))?
-	//	bodyBlock=BlockStatement;
+	//Routine returns fmlInfra::Routine
+	//    : ( visibility=VisibilityKind )?  ( macro?='macro' )?  ( DesignDebugTrace )*
+	//        'routine'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        ( '-->'
+	//            (     resultSet=FormalParameterSet
+	//            | '(' resultSet=FormalParameterSet ')'
+	//            )
+	//        )?
+	//        bodyBlock=BlockStatement
+	//    ;
 	public RoutineElements getRoutineAccess() {
 		return pRoutine;
 	}
@@ -25050,10 +29711,13 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Section Model Of Interaction / Communication Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//ModelOfInteraction fmlInfra::ModelOfInteraction:
-	//	{fmlInfra::ModelOfInteraction}
-	//	'@com:' (routes+=Route
-	//	| connectors+=Connector)*;
+	//ModelOfInteraction returns fmlInfra::ModelOfInteraction
+	//    : { fmlInfra::ModelOfInteraction }
+	//        '@com:'
+	//        ( routes+=Route
+	//        | connectors+=Connector
+	//        )*
+	//    ;
 	public ModelOfInteractionElements getModelOfInteractionAccess() {
 		return pModelOfInteraction;
 	}
@@ -25062,12 +29726,17 @@
 		return getModelOfInteractionAccess().getRule();
 	}
 	
-	//Route fmlInfra::Route:
-	//	{fmlInfra::Route}
-	//	'route' '<' protocol=ComRouteProtocol '>' (name=ESIdentifier unrestrictedName=UnrestrictedName?)?
-	//	'[' ('*'
-	//	| signals+=[fmlInfra::Signal|ESUfid] (',' signals+=[fmlInfra::Signal|ESUfid])*)
-	//	']' ';';
+	//Route returns fmlInfra::Route
+	//    : { fmlInfra::Route }
+	//        'route' '<' protocol=ComRouteProtocol '>'
+	//        ( name=ESIdentifier ( unrestrictedName=UnrestrictedName )? )?
+	//        '['
+	//        ( '*'
+	//        | signals+=[fmlInfra::Signal|ESUfid]
+	//            ( ',' signals+=[fmlInfra::Signal|ESUfid] )*
+	//        )
+	//        ']' ';'
+	//    ;
 	public RouteElements getRouteAccess() {
 		return pRoute;
 	}
@@ -25076,13 +29745,21 @@
 		return getRouteAccess().getRule();
 	}
 	
-	//ComRouteProtocol fmlInfra::ComProtocol:
-	//	protocol=ComProtocolKind
-	//	| protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer) '>')?
-	//	| inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer;
+	//ComRouteProtocol returns fmlInfra::ComProtocol
+	//    : protocol=ComProtocolKind
+	//    | protocol=BufferProtocolKind
+	//        ( ':'
+	//            ( inner_buffer=BufferContainerType
+	//            | buffer=ComBuffer
+	//            )
+	//        | '<'
+	//            ( inner_buffer=BufferContainerType
+	//            | buffer=ComBuffer
+	//            ) '>'
+	//        )?
+	//    | inner_buffer=BufferContainerType
+	//    | buffer=ComBuffer
+	//    ;
 	public ComRouteProtocolElements getComRouteProtocolAccess() {
 		return pComRouteProtocol;
 	}
@@ -25091,10 +29768,11 @@
 		return getComRouteProtocolAccess().getRule();
 	}
 	
-	//Connector fmlInfra::Connector:
-	//	('connector' | 'connect') '<' protocol=ComProtocol '>'
-	//	name=ESIdentifier? unrestrictedName=UnrestrictedName?
-	//	'{' connectorEnd+=ConnectorEnd+ '}';
+	//Connector returns fmlInfra::Connector
+	//    : ( 'connector' | 'connect' ) '<' protocol=ComProtocol '>'
+	//        ( name=ESIdentifier )?  ( unrestrictedName=UnrestrictedName )?
+	//        '{' (connectorEnd+=ConnectorEnd)+ '}'
+	//    ;
 	public ConnectorElements getConnectorAccess() {
 		return pConnector;
 	}
@@ -25103,15 +29781,23 @@
 		return getConnectorAccess().getRule();
 	}
 	
-	//ComProtocol fmlInfra::ComProtocol:
-	//	protocol=ComEnvRdvProtocolKind
-	//	| protocol=ComMultiRdvProtocolKind ('<' cast=ComCastKing '>')?
-	//	| protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer) '>')?
-	//	| inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer
-	//	| cast=ComCastKing;
+	//ComProtocol returns fmlInfra::ComProtocol
+	//    : protocol=ComEnvRdvProtocolKind
+	//    | protocol=ComMultiRdvProtocolKind ( '<' cast=ComCastKing '>')?
+	//    | protocol=BufferProtocolKind
+	//        ( ':'
+	//            ( inner_buffer=BufferContainerType
+	//            | buffer=ComBuffer
+	//            )
+	//        | '<'
+	//            ( inner_buffer=BufferContainerType
+	//            | buffer=ComBuffer
+	//            ) '>'
+	//        )?
+	//    | inner_buffer=BufferContainerType
+	//    | buffer=ComBuffer
+	//    | cast=ComCastKing
+	//    ;
 	public ComProtocolElements getComProtocolAccess() {
 		return pComProtocol;
 	}
@@ -25120,8 +29806,11 @@
 		return getComProtocolAccess().getRule();
 	}
 	
-	//enum ComProtocolKind returns fmlInfra::ComProtocolKind:
-	//	env | rdv | multi_rdv='multirdv';
+	//enum ComProtocolKind returns fmlInfra::ComProtocolKind
+	//    : env       = 'env'
+	//    | rdv       = 'rdv'
+	//    | multi_rdv = 'multirdv'
+	//    ;
 	public ComProtocolKindElements getComProtocolKindAccess() {
 		return eComProtocolKind;
 	}
@@ -25130,8 +29819,10 @@
 		return getComProtocolKindAccess().getRule();
 	}
 	
-	//enum ComEnvRdvProtocolKind returns fmlInfra::ComProtocolKind:
-	//	env | rdv;
+	//enum ComEnvRdvProtocolKind returns fmlInfra::ComProtocolKind
+	//    : env = 'env'
+	//    | rdv = 'rdv'
+	//    ;
 	public ComEnvRdvProtocolKindElements getComEnvRdvProtocolKindAccess() {
 		return eComEnvRdvProtocolKind;
 	}
@@ -25140,8 +29831,9 @@
 		return getComEnvRdvProtocolKindAccess().getRule();
 	}
 	
-	//enum ComMultiRdvProtocolKind returns fmlInfra::ComProtocolKind:
-	//	multi_rdv='multirdv';
+	//enum ComMultiRdvProtocolKind returns fmlInfra::ComProtocolKind
+	//    : multi_rdv = 'multirdv'
+	//    ;
 	public ComMultiRdvProtocolKindElements getComMultiRdvProtocolKindAccess() {
 		return eComMultiRdvProtocolKind;
 	}
@@ -25150,8 +29842,9 @@
 		return getComMultiRdvProtocolKindAccess().getRule();
 	}
 	
-	//enum BufferProtocolKind returns fmlInfra::ComProtocolKind:
-	//	buffer;
+	//enum BufferProtocolKind returns fmlInfra::ComProtocolKind
+	//    : buffer = 'buffer'
+	//    ;
 	public BufferProtocolKindElements getBufferProtocolKindAccess() {
 		return eBufferProtocolKind;
 	}
@@ -25160,8 +29853,12 @@
 		return getBufferProtocolKindAccess().getRule();
 	}
 	
-	//enum ComCastKing returns fmlInfra::ComCastKind:
-	//	unicast | anycast | multicast | broadcast;
+	//enum ComCastKing returns fmlInfra::ComCastKind
+	//    : unicast   = 'unicast'
+	//    | anycast   = 'anycast'
+	//    | multicast = 'multicast'
+	//    | broadcast = 'broadcast'
+	//    ;
 	public ComCastKingElements getComCastKingAccess() {
 		return eComCastKing;
 	}
@@ -25170,10 +29867,14 @@
 		return getComCastKingAccess().getRule();
 	}
 	
-	//ConnectorEnd fmlInfra::ConnectorEnd:
-	//	{fmlInfra::ConnectorEnd} direction=ChannelDirection ('<' protocol=ComPointProtocol '>')? (points+=ComPoint ';'
-	//	| '[' points+=ComPoint (',' points+=ComPoint)* ']' ';'
-	//	| '{' (points+=ComPoint ';')+ '}');
+	//ConnectorEnd returns fmlInfra::ConnectorEnd
+	//    : { fmlInfra::ConnectorEnd }
+	//        direction=ChannelDirection ( '<' protocol=ComPointProtocol '>' )?
+	//        ( points+=ComPoint ';'
+	//        | '[' points+=ComPoint ( ',' points+=ComPoint )* ']' ';'
+	//        | '{' ( points+=ComPoint ';' )+ '}'
+	//        )
+	//    ;
 	public ConnectorEndElements getConnectorEndAccess() {
 		return pConnectorEnd;
 	}
@@ -25182,10 +29883,12 @@
 		return getConnectorEndAccess().getRule();
 	}
 	
-	//ComPoint fmlInfra::ComPoint:
-	//	{fmlInfra::ComPoint} (machine=[fmlCommon::NamedElement|ESIdentifier] ('->' | '.'))?
-	//	//		( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
-	//	port=[fmlInfra::Port|ESIdentifier];
+	//ComPoint returns fmlInfra::ComPoint
+	//    : { fmlInfra::ComPoint }
+	//        ( machine=[fmlCommon::NamedElement|ESIdentifier] ('->'| '.') )?
+	////        ( machine=ValuePureNamedMachineExpression  ('->'| '.') )?
+	//        port=[fmlInfra::Port|ESIdentifier]
+	//    ;
 	public ComPointElements getComPointAccess() {
 		return pComPoint;
 	}
@@ -25194,13 +29897,21 @@
 		return getComPointAccess().getRule();
 	}
 	
-	//ComPointProtocol fmlInfra::ComProtocol:
-	//	protocol=BufferProtocolKind (':' (inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer) | '<' (inner_buffer=BufferContainerType
-	//	| buffer=ComBuffer) '>')?
-	//	| inner_buffer=BufferContainerType
-	//	//	| buffer=ComBuffer
-	//	| bufferRef=ComBufferRef;
+	//ComPointProtocol returns fmlInfra::ComProtocol
+	//    : protocol=BufferProtocolKind
+	//        ( ':'
+	//            ( inner_buffer=BufferContainerType
+	//            | buffer=ComBuffer
+	//            )
+	//        | '<'
+	//            ( inner_buffer=BufferContainerType
+	//            | buffer=ComBuffer
+	//            ) '>'
+	//        )?
+	//    | inner_buffer=BufferContainerType
+	////    | buffer=ComBuffer
+	//    | bufferRef=ComBufferRef
+	//    ;
 	public ComPointProtocolElements getComPointProtocolAccess() {
 		return pComPointProtocol;
 	}
@@ -25209,11 +29920,13 @@
 		return getComPointProtocolAccess().getRule();
 	}
 	
-	//ComBuffer fmlExpr::ValueElementSpecification:
-	//	(parent=LiteralPureReferenceMachine
-	//	// ( '.' | '->' ) element
-	//	kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind))?
-	//	element=[fmlInfra::Buffer|ESIdentifier];
+	//ComBuffer returns fmlExpr::ValueElementSpecification
+	//    : ( parent=LiteralPureReferenceMachine
+	//        // ( '.' | '->' ) element
+	//        kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+	//      )?
+	//      element=[fmlInfra::Buffer|ESIdentifier]
+	//    ;
 	public ComBufferElements getComBufferAccess() {
 		return pComBuffer;
 	}
@@ -25222,9 +29935,11 @@
 		return getComBufferAccess().getRule();
 	}
 	
-	//ComBufferRef fmlExpr::LiteralReferenceSpecification:
-	//	{fmlExpr::LiteralReferenceSpecification} (parent+=LiteralReferenceExpression ('.' | '->'))*
-	//	element=BufferReferenceElement;
+	//ComBufferRef returns fmlExpr::LiteralReferenceSpecification
+	//    : { fmlExpr::LiteralReferenceSpecification }
+	//        ( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
+	//        element=BufferReferenceElement
+	//    ;
 	public ComBufferRefElements getComBufferRefAccess() {
 		return pComBufferRef;
 	}
@@ -25233,8 +29948,10 @@
 		return getComBufferRefAccess().getRule();
 	}
 	
-	//BufferReferenceElement fmlExpr::LiteralReferenceElement:
-	//	{fmlExpr::LiteralReferenceElement} element=[fmlInfra::Buffer|ESIdentifier];
+	//BufferReferenceElement returns fmlExpr::LiteralReferenceElement
+	//    : {fmlExpr::LiteralReferenceElement}
+	//        element=[fmlInfra::Buffer|ESIdentifier]
+	//    ;
 	public BufferReferenceElementElements getBufferReferenceElementAccess() {
 		return pBufferReferenceElement;
 	}
@@ -25243,8 +29960,11 @@
 		return getBufferReferenceElementAccess().getRule();
 	}
 	
-	//LiteralPureReferenceMachine fmlExpr::LiteralReferenceExpression:
-	//	{fmlExpr::LiteralReferenceElement} element=[fmlInfra::Machine|ESIdentifier] | LiteralReferenceMachineContext;
+	//LiteralPureReferenceMachine returns fmlExpr::LiteralReferenceExpression
+	//    : {fmlExpr::LiteralReferenceElement}
+	//        element=[fmlInfra::Machine|ESIdentifier]
+	//    | LiteralReferenceMachineContext
+	//    ;
 	public LiteralPureReferenceMachineElements getLiteralPureReferenceMachineAccess() {
 		return pLiteralPureReferenceMachine;
 	}
@@ -25257,19 +29977,20 @@
 	//// Sections Declarations Data Rules
 	//////////////////////////////////////////////////////////////////////////////////
 	////TypeDefinition returns fmlType::DataType
-	////	: typedef?='type' name=ESIdentifier
-	////		( support=DataTypeReference ';'
-	////		| support=StructuredDataType
-	////		)
-	////	;
-	//TypeDefinition fmlType::DataType:
-	//	EnumerationTypeDefinition
-	//	| StructureTypeDefinition
-	//	| UnionTypeDefinition
-	//	| ChoiceTypeDefinition
-	//	| IntervalTypeDefinition
-	//	| CollectionTypeDefinition
-	//	| OtherDataTypeDefinition;
+	////    : typedef?='type' name=ESIdentifier
+	////        ( support=DataTypeReference ';'
+	////        | support=StructuredDataType
+	////        )
+	////    ;
+	//TypeDefinition returns fmlType::DataType
+	//    : EnumerationTypeDefinition
+	//    | StructureTypeDefinition
+	//    | UnionTypeDefinition
+	//    | ChoiceTypeDefinition
+	//    | IntervalTypeDefinition
+	//    | CollectionTypeDefinition
+	//    | OtherDataTypeDefinition
+	//    ;
 	public TypeDefinitionElements getTypeDefinitionAccess() {
 		return pTypeDefinition;
 	}
@@ -25279,25 +30000,26 @@
 	}
 	
 	////TypeDefinitionImpl returns fmlType::DataTypeReference
-	////	: name=ESIdentifier
-	////		( support=DataTypeReference ';'
-	////		| support=StructuredDataType
-	////		)
-	////	;
+	////    : name=ESIdentifier
+	////        ( support=DataTypeReference ';'
+	////        | support=StructuredDataType
+	////        )
+	////    ;
 	////TypeDefinitionImpl returns fmlType::DataType
-	////	: EnumerationTypeDefinitionImpl
-	////	| StructureTypeDefinitionImpl
-	////	| UnionTypeDefinitionImpl
-	////	| ChoiceTypeDefinitionImpl
+	////    : EnumerationTypeDefinitionImpl
+	////    | StructureTypeDefinitionImpl
+	////    | UnionTypeDefinitionImpl
+	////    | ChoiceTypeDefinitionImpl
 	////
-	////	| IntervalTypeDefinitionImpl
-	////	| CollectionTypeDefinitionImpl
+	////    | IntervalTypeDefinitionImpl
+	////    | CollectionTypeDefinitionImpl
 	////
-	////	| OtherDataTypeDefinitionImpl
-	////	;
-	//DataTypeMultiplicity fmlExpr::Expression:
-	//	LiteralIntegerExpression
-	//	| LiteralReferenceElement;
+	////    | OtherDataTypeDefinitionImpl
+	////    ;
+	//DataTypeMultiplicity returns fmlExpr::Expression
+	//    : LiteralIntegerExpression
+	//    | LiteralReferenceElement
+	//    ;
 	public DataTypeMultiplicityElements getDataTypeMultiplicityAccess() {
 		return pDataTypeMultiplicity;
 	}
@@ -25306,10 +30028,15 @@
 		return getDataTypeMultiplicityAccess().getRule();
 	}
 	
-	//DataTypeReference fmlType::DataType:
-	//	SimpleDataType ({fmlType::DataTypeReference.support=current}
-	//	'[' multiplicity=DataTypeMultiplicity ']')?
-	//	| {fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?;
+	//DataTypeReference returns fmlType::DataType
+	//    : SimpleDataType
+	//        ( {fmlType::DataTypeReference.support=current}
+	//            '[' multiplicity=DataTypeMultiplicity ']'
+	//        )?
+	//    | {fmlType::DataTypeReference}
+	//        typeref=[fmlType::DataType|ESUfid]
+	//        ( '[' multiplicity=DataTypeMultiplicity ']' )?
+	//    ;
 	public DataTypeReferenceElements getDataTypeReferenceAccess() {
 		return pDataTypeReference;
 	}
@@ -25318,12 +30045,16 @@
 		return getDataTypeReferenceAccess().getRule();
 	}
 	
-	//OtherDataTypeDefinition fmlType::DataTypeReference:
-	//	{fmlType::DataTypeReference} visibility=VisibilityKind? typedef?='type'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? (support=PrimitiveType ('[' multiplicity=DataTypeMultiplicity
-	//	']')?
-	//	| typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?) (constraint=TypeConstraintRoutine |
-	//	';');
+	//OtherDataTypeDefinition returns fmlType::DataTypeReference
+	//    : {fmlType::DataTypeReference}
+	//        ( visibility=VisibilityKind )?  typedef?='type'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( support=PrimitiveType
+	//            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+	//        | typeref=[fmlType::DataType|ESUfid]
+	//            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+	//        )  ( constraint=TypeConstraintRoutine | ';' )
+	//    ;
 	public OtherDataTypeDefinitionElements getOtherDataTypeDefinitionAccess() {
 		return pOtherDataTypeDefinition;
 	}
@@ -25332,11 +30063,15 @@
 		return getOtherDataTypeDefinitionAccess().getRule();
 	}
 	
-	//TypeConstraintRoutine fmlInfra::Routine:
-	//	{fmlInfra::Routine} '{'
-	//	'@constraint' ('(' parameterSet=VariableRoutineParameterSet ')')? (bodyBlock=BlockStatement
-	//	| bodyBlock=ConditionalBlockStatement ';')
-	//	'}';
+	//TypeConstraintRoutine returns fmlInfra::Routine
+	//    : { fmlInfra::Routine } '{'
+	//        '@constraint'
+	//        ( '(' parameterSet=VariableRoutineParameterSet ')' )?
+	//        ( bodyBlock=BlockStatement
+	//        | bodyBlock=ConditionalBlockStatement ';'
+	//        )
+	//        '}'
+	//    ;
 	public TypeConstraintRoutineElements getTypeConstraintRoutineAccess() {
 		return pTypeConstraintRoutine;
 	}
@@ -25345,8 +30080,10 @@
 		return getTypeConstraintRoutineAccess().getRule();
 	}
 	
-	//ConditionalBlockStatement fmlStmnt::BlockStatement:
-	//	{fmlStmnt::BlockStatement} statement+=GuardTestExpression;
+	//ConditionalBlockStatement returns fmlStmnt::BlockStatement
+	//    : {fmlStmnt::BlockStatement}
+	//        statement+=GuardTestExpression
+	//    ;
 	public ConditionalBlockStatementElements getConditionalBlockStatementAccess() {
 		return pConditionalBlockStatement;
 	}
@@ -25355,8 +30092,9 @@
 		return getConditionalBlockStatementAccess().getRule();
 	}
 	
-	//GuardTestExpression fmlStmnt::GuardStatement:
-	//	'|=>' condition=Expression;
+	//GuardTestExpression returns fmlStmnt::GuardStatement
+	//    : '|=>' condition=Expression
+	//    ;
 	public GuardTestExpressionElements getGuardTestExpressionAccess() {
 		return pGuardTestExpression;
 	}
@@ -25366,17 +30104,18 @@
 	}
 	
 	////OtherDataTypeDefinitionImpl returns fmlType::DataTypeReference
-	////	: {fmlType::DataTypeReference}
-	////		name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
-	////		( support=PrimitiveType
-	////			( '[' multiplicity=DataTypeMultiplicity ']' )?
-	////		| typeref=[fmlType::DataType|ESUfid]
-	////			( '[' multiplicity=DataTypeMultiplicity ']' )?
-	////		)  typedef?=';'
-	////	;
-	//DataType fmlType::DataType:
-	//	DataTypeReference
-	//	| StructuredDataType;
+	////    : {fmlType::DataTypeReference}
+	////        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	////        ( support=PrimitiveType
+	////            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+	////        | typeref=[fmlType::DataType|ESUfid]
+	////            ( '[' multiplicity=DataTypeMultiplicity ']' )?
+	////        )  typedef?=';'
+	////    ;
+	//DataType returns fmlType::DataType
+	//    : DataTypeReference
+	//    | StructuredDataType
+	//    ;
 	public DataTypeElements getDataTypeAccess() {
 		return pDataType;
 	}
@@ -25385,10 +30124,11 @@
 		return getDataTypeAccess().getRule();
 	}
 	
-	//SimpleDataType fmlType::DataType:
-	//	PrimitiveType
-	//	| IntervalType
-	//	| CollectionType;
+	//SimpleDataType returns fmlType::DataType
+	//    : PrimitiveType
+	//    | IntervalType
+	//    | CollectionType
+	//    ;
 	public SimpleDataTypeElements getSimpleDataTypeAccess() {
 		return pSimpleDataType;
 	}
@@ -25397,11 +30137,12 @@
 		return getSimpleDataTypeAccess().getRule();
 	}
 	
-	//StructuredDataType fmlType::DataType:
-	//	EnumerationType
-	//	| StructureType
-	//	| UnionType
-	//	| ChoiceType;
+	//StructuredDataType returns fmlType::DataType
+	//    : EnumerationType
+	//    | StructureType
+	//    | UnionType
+	//    | ChoiceType
+	//    ;
 	public StructuredDataTypeElements getStructuredDataTypeAccess() {
 		return pStructuredDataType;
 	}
@@ -25411,46 +30152,47 @@
 	}
 	
 	////PrimitiveType returns fmlType::PrimitiveType
-	////	: kind=NumberPrimitiveTypeKind ( '<' ( 'bit:' )? bitSize = EInt '>' )?
-	////	| kind=OtherPrimitiveKind
-	////	;
+	////    : kind=NumberPrimitiveTypeKind ( '<' ( 'bit:' )? bitSize = EInt '>' )?
+	////    | kind=OtherPrimitiveKind
+	////    ;
 	////
 	////enum OtherPrimitiveKind returns fmlType::PrimitiveTypeKind
-	////	: BOOLEAN   = 'boolean'
-	////	| BOOLEAN   = 'bool'
-	////	| CHAR      = 'char'
-	////	| STRING    = 'string'
-	////	| BUFFER    = 'buffer'
-	////	| MESSAGE   = 'message'
-	////	| PORT      = 'port'
-	////	| MACHINE   = 'machine'
-	////	;
+	////    : BOOLEAN   = 'boolean'
+	////    | BOOLEAN   = 'bool'
+	////    | CHAR      = 'char'
+	////    | STRING    = 'string'
+	////    | BUFFER    = 'buffer'
+	////    | MESSAGE   = 'message'
+	////    | PORT      = 'port'
+	////    | MACHINE   = 'machine'
+	////    ;
 	////
 	////
 	////enum NumberPrimitiveTypeKind returns fmlType::PrimitiveTypeKind
-	////	: INTEGER   = 'integer'
-	////	| RATIONAL  = 'rational'
-	////	| FLOAT     = 'float'
-	////	| DOUBLE    = 'double'
-	////	| REAL      = 'real'
+	////    : INTEGER   = 'integer'
+	////    | RATIONAL  = 'rational'
+	////    | FLOAT     = 'float'
+	////    | DOUBLE    = 'double'
+	////    | REAL      = 'real'
 	////
-	////	| TIME      = 'time'
+	////    | TIME      = 'time'
 	////
-	////	| UINTEGER  = 'uinteger'
-	////	| URATIONAL = 'urational'
-	////	| UFLOAT    = 'ufloat'
-	////	| UDOUBLE   = 'udouble'
-	////	| UREAL     = 'ureal'
+	////    | UINTEGER  = 'uinteger'
+	////    | URATIONAL = 'urational'
+	////    | UFLOAT    = 'ufloat'
+	////    | UDOUBLE   = 'udouble'
+	////    | UREAL     = 'ureal'
 	////
-	////	| INT       = 'int'
-	////	| RAT       = 'rat'
+	////    | INT       = 'int'
+	////    | RAT       = 'rat'
 	////
-	////	| UINT      = 'uint'
-	////	| URAT      = 'urat'
-	////	;
-	//PrimitiveType fmlType::PrimitiveType:
-	//	PrimitiveNumberType
-	//	| OtherPrimitiveType;
+	////    | UINT      = 'uint'
+	////    | URAT      = 'urat'
+	////    ;
+	//PrimitiveType returns fmlType::PrimitiveType
+	//    : PrimitiveNumberType
+	//    | OtherPrimitiveType
+	//    ;
 	public PrimitiveTypeElements getPrimitiveTypeAccess() {
 		return pPrimitiveType;
 	}
@@ -25459,12 +30201,13 @@
 		return getPrimitiveTypeAccess().getRule();
 	}
 	
-	//PrimitiveNumberType fmlType::PrimitiveNumberType:
-	//	PrimitiveIntegerType
-	//	| PrimitiveRationalType
-	//	| PrimitiveFloatType
-	//	| PrimitiveRealType
-	//	| PrimitiveTimeType;
+	//PrimitiveNumberType returns fmlType::PrimitiveNumberType
+	//    : PrimitiveIntegerType
+	//    | PrimitiveRationalType
+	//    | PrimitiveFloatType
+	//    | PrimitiveRealType
+	//    | PrimitiveTimeType
+	//    ;
 	public PrimitiveNumberTypeElements getPrimitiveNumberTypeAccess() {
 		return pPrimitiveNumberType;
 	}
@@ -25473,11 +30216,12 @@
 		return getPrimitiveNumberTypeAccess().getRule();
 	}
 	
-	//enum PrimitiveNumberSign returns fmlType::PrimitiveNumberSign:
-	//	positive='+'
-	//	| positive_strict='++'
-	//	| negative='-'
-	//	| negative_strict='--';
+	//enum PrimitiveNumberSign returns fmlType::PrimitiveNumberSign
+	//    : positive='+'
+	//    | positive_strict='++'
+	//    | negative='-'
+	//    | negative_strict='--'
+	//    ;
 	public PrimitiveNumberSignElements getPrimitiveNumberSignAccess() {
 		return ePrimitiveNumberSign;
 	}
@@ -25486,14 +30230,19 @@
 		return getPrimitiveNumberSignAccess().getRule();
 	}
 	
-	//PrimitiveIntegerType fmlType::PrimitiveIntegerType:
-	//	{fmlType::PrimitiveIntegerType} sign=PrimitiveNumberSign?
-	//	name=('integer'
-	//	| 'uinteger'
-	//	| 'pos_integer'
-	//	| 'int'
-	//	| 'uint') (':' size=EInt
-	//	| '<' 'size:'? size=EInt '>')?;
+	//PrimitiveIntegerType returns fmlType::PrimitiveIntegerType
+	//    : { fmlType::PrimitiveIntegerType }
+	//        ( sign=PrimitiveNumberSign )?
+	//        name=( 'integer'
+	//        | 'uinteger'
+	//        | 'pos_integer'
+	//        | 'int'
+	//        | 'uint'
+	//        )
+	//        ( ':' size = EInt
+	//            | '<' ( 'size:' )? size = EInt '>'
+	//        )?
+	//    ;
 	public PrimitiveIntegerTypeElements getPrimitiveIntegerTypeAccess() {
 		return pPrimitiveIntegerType;
 	}
@@ -25502,14 +30251,19 @@
 		return getPrimitiveIntegerTypeAccess().getRule();
 	}
 	
-	//PrimitiveRationalType fmlType::PrimitiveRationalType:
-	//	{fmlType::PrimitiveRationalType} sign=PrimitiveNumberSign?
-	//	name=('rational'
-	//	| 'urational'
-	//	| 'pos_rational'
-	//	| 'rat'
-	//	| 'urat') (':' size=EInt
-	//	| '<' 'size:'? size=EInt '>')?;
+	//PrimitiveRationalType returns fmlType::PrimitiveRationalType
+	//    : { fmlType::PrimitiveRationalType }
+	//        ( sign=PrimitiveNumberSign )?
+	//        name=( 'rational'
+	//        | 'urational'
+	//        | 'pos_rational'
+	//        | 'rat'
+	//        | 'urat'
+	//        )
+	//        ( ':' size = EInt
+	//            | '<' ( 'size:' )? size = EInt '>'
+	//        )?
+	//    ;
 	public PrimitiveRationalTypeElements getPrimitiveRationalTypeAccess() {
 		return pPrimitiveRationalType;
 	}
@@ -25518,14 +30272,19 @@
 		return getPrimitiveRationalTypeAccess().getRule();
 	}
 	
-	//PrimitiveFloatType fmlType::PrimitiveFloatType:
-	//	{fmlType::PrimitiveFloatType} sign=PrimitiveNumberSign?
-	//	name=('float'
-	//	| 'ufloat'
-	//	| 'pos_float'
-	//	| 'double'
-	//	| 'udouble') (':' size=EInt
-	//	| '<' 'size:'? size=EInt '>')?;
+	//PrimitiveFloatType returns fmlType::PrimitiveFloatType
+	//    : { fmlType::PrimitiveFloatType }
+	//        ( sign=PrimitiveNumberSign )?
+	//        name=( 'float'
+	//        | 'ufloat'
+	//        | 'pos_float'
+	//        | 'double'
+	//        | 'udouble'
+	//        )
+	//        ( ':' size = EInt
+	//            | '<' ( 'size:' )? size = EInt '>'
+	//        )?
+	//    ;
 	public PrimitiveFloatTypeElements getPrimitiveFloatTypeAccess() {
 		return pPrimitiveFloatType;
 	}
@@ -25534,12 +30293,17 @@
 		return getPrimitiveFloatTypeAccess().getRule();
 	}
 	
-	//PrimitiveRealType fmlType::PrimitiveRealType:
-	//	{fmlType::PrimitiveRealType} sign=PrimitiveNumberSign?
-	//	name=('real'
-	//	| 'ureal'
-	//	| 'pos_real') (':' size=EInt
-	//	| '<' 'size:'? size=EInt '>')?;
+	//PrimitiveRealType returns fmlType::PrimitiveRealType
+	//    : { fmlType::PrimitiveRealType }
+	//        ( sign=PrimitiveNumberSign )?
+	//        name=( 'real'
+	//        | 'ureal'
+	//        | 'pos_real'
+	//        )
+	//        ( ':' size = EInt
+	//            | '<' ( 'size:' )? size = EInt '>'
+	//        )?
+	//    ;
 	public PrimitiveRealTypeElements getPrimitiveRealTypeAccess() {
 		return pPrimitiveRealType;
 	}
@@ -25548,12 +30312,18 @@
 		return getPrimitiveRealTypeAccess().getRule();
 	}
 	
-	//PrimitiveTimeType fmlType::PrimitiveTimeType:
-	//	{fmlType::PrimitiveTimeType}
-	//	'time' ('<' support=PrimitiveTimeNumberType '>'
-	//	| support=PrimitiveTimeNumberType)?
-	//	| {fmlType::PrimitiveTimeType} clock?='clock' ('<' support=PrimitiveTimeNumberType '>'
-	//	| support=PrimitiveTimeNumberType)?;
+	//PrimitiveTimeType returns fmlType::PrimitiveTimeType
+	//    : { fmlType::PrimitiveTimeType }
+	//        'time'
+	//        ( '<' support=PrimitiveTimeNumberType '>'
+	//        | support=PrimitiveTimeNumberType
+	//        )?
+	//    | { fmlType::PrimitiveTimeType }
+	//        clock?='clock'
+	//        ( '<' support=PrimitiveTimeNumberType '>'
+	//        | support=PrimitiveTimeNumberType
+	//        )?
+	//    ;
 	public PrimitiveTimeTypeElements getPrimitiveTimeTypeAccess() {
 		return pPrimitiveTimeType;
 	}
@@ -25562,11 +30332,12 @@
 		return getPrimitiveTimeTypeAccess().getRule();
 	}
 	
-	//PrimitiveTimeNumberType fmlType::PrimitiveNumberType:
-	//	PrimitiveIntegerType
-	//	| PrimitiveRationalType
-	//	| PrimitiveFloatType
-	//	| PrimitiveRealType;
+	//PrimitiveTimeNumberType returns fmlType::PrimitiveNumberType
+	//    : PrimitiveIntegerType
+	//    | PrimitiveRationalType
+	//    | PrimitiveFloatType
+	//    | PrimitiveRealType
+	//    ;
 	public PrimitiveTimeNumberTypeElements getPrimitiveTimeNumberTypeAccess() {
 		return pPrimitiveTimeNumberType;
 	}
@@ -25575,11 +30346,12 @@
 		return getPrimitiveTimeNumberTypeAccess().getRule();
 	}
 	
-	//OtherPrimitiveType fmlType::PrimitiveType:
-	//	PrimitiveBooleanType
-	//	| PrimitiveCharacterType
-	//	| PrimitiveStringType
-	//	| PrimitiveInstanceType;
+	//OtherPrimitiveType returns fmlType::PrimitiveType
+	//    : PrimitiveBooleanType
+	//    | PrimitiveCharacterType
+	//    | PrimitiveStringType
+	//    | PrimitiveInstanceType
+	//    ;
 	public OtherPrimitiveTypeElements getOtherPrimitiveTypeAccess() {
 		return pOtherPrimitiveType;
 	}
@@ -25588,8 +30360,10 @@
 		return getOtherPrimitiveTypeAccess().getRule();
 	}
 	
-	//PrimitiveBooleanType fmlType::PrimitiveBooleanType:
-	//	{fmlType::PrimitiveBooleanType} name=('boolean' | 'bool');
+	//PrimitiveBooleanType returns fmlType::PrimitiveBooleanType
+	//    : { fmlType::PrimitiveBooleanType }
+	//        name=( 'boolean'| 'bool' )
+	//    ;
 	public PrimitiveBooleanTypeElements getPrimitiveBooleanTypeAccess() {
 		return pPrimitiveBooleanType;
 	}
@@ -25598,8 +30372,9 @@
 		return getPrimitiveBooleanTypeAccess().getRule();
 	}
 	
-	//PrimitiveCharacterType fmlType::PrimitiveCharacterType:
-	//	{fmlType::PrimitiveCharacterType} 'char';
+	//PrimitiveCharacterType returns fmlType::PrimitiveCharacterType
+	//    : { fmlType::PrimitiveCharacterType } 'char'
+	//    ;
 	public PrimitiveCharacterTypeElements getPrimitiveCharacterTypeAccess() {
 		return pPrimitiveCharacterType;
 	}
@@ -25608,9 +30383,13 @@
 		return getPrimitiveCharacterTypeAccess().getRule();
 	}
 	
-	//PrimitiveStringType fmlType::PrimitiveStringType:
-	//	{fmlType::PrimitiveStringType} name='string' (':' size=EInt
-	//	| '<' 'size:'? size=EInt '>')?;
+	//PrimitiveStringType returns fmlType::PrimitiveStringType
+	//    : { fmlType::PrimitiveStringType }
+	//        name='string'
+	//        ( ':' size = EInt
+	//        | '<' ( 'size:' )? size = EInt '>'
+	//        )?
+	//    ;
 	public PrimitiveStringTypeElements getPrimitiveStringTypeAccess() {
 		return pPrimitiveStringType;
 	}
@@ -25619,8 +30398,14 @@
 		return getPrimitiveStringTypeAccess().getRule();
 	}
 	
-	//enum PrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind:
-	//	buffer | message | port | signal | machine | vertex;
+	//enum PrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind
+	//    : buffer='buffer'
+	//    | message='message'
+	//    | port='port'
+	//    | signal='signal'
+	//    | machine='machine'
+	//    | vertex='vertex'
+	//    ;
 	public PrimitiveInstanceKindElements getPrimitiveInstanceKindAccess() {
 		return ePrimitiveInstanceKind;
 	}
@@ -25629,9 +30414,11 @@
 		return getPrimitiveInstanceKindAccess().getRule();
 	}
 	
-	//PrimitiveInstanceType fmlType::PrimitiveInstanceType:
-	//	{fmlType::PrimitiveInstanceType} expected=PrimitiveInstanceKind ('<' model=[fmlCommon::NamedElement|ESIdentifier]
-	//	'>')?;
+	//PrimitiveInstanceType returns fmlType::PrimitiveInstanceType
+	//    : { fmlType::PrimitiveInstanceType }
+	//        expected=PrimitiveInstanceKind
+	//        ( '<' model=[fmlCommon::NamedElement|ESIdentifier] '>' )?
+	//    ;
 	public PrimitiveInstanceTypeElements getPrimitiveInstanceTypeAccess() {
 		return pPrimitiveInstanceType;
 	}
@@ -25640,11 +30427,16 @@
 		return getPrimitiveInstanceTypeAccess().getRule();
 	}
 	
-	//IntervalType fmlType::IntervalType:
-	//	{fmlType::IntervalType} name='interval'
-	//	'<'
-	//	support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' | ropen?='[')
-	//	'>';
+	//IntervalType returns fmlType::IntervalType
+	//    : {fmlType::IntervalType}
+	//        name='interval'
+	//        '<'
+	//            support=PrimitiveNumberType
+	//            ( lopen?=']' | '[' )
+	//            infimum=Expression ',' supremum=Expression
+	//            ( ']' |  ropen?='[' )
+	//        '>'
+	//    ;
 	public IntervalTypeElements getIntervalTypeAccess() {
 		return pIntervalType;
 	}
@@ -25653,13 +30445,18 @@
 		return getIntervalTypeAccess().getRule();
 	}
 	
-	//IntervalTypeDefinition fmlType::IntervalType:
-	//	{fmlType::IntervalType} visibility=VisibilityKind? 'type'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'interval'
-	//	'<'
-	//	support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' | ropen?='[')
-	//	'>' ';';
+	//IntervalTypeDefinition returns fmlType::IntervalType
+	//    : {fmlType::IntervalType}
+	//        ( visibility=VisibilityKind )? 'type'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        'interval'
+	//        '<'
+	//            support=PrimitiveNumberType
+	//            ( lopen?=']' | '[' )
+	//            infimum=Expression ',' supremum=Expression
+	//            ( ']' |  ropen?='[' )
+	//        '>' ';'
+	//    ;
 	public IntervalTypeDefinitionElements getIntervalTypeDefinitionAccess() {
 		return pIntervalTypeDefinition;
 	}
@@ -25668,12 +30465,17 @@
 		return getIntervalTypeDefinitionAccess().getRule();
 	}
 	
-	//IntervalTypeDefinitionImpl fmlType::IntervalType:
-	//	{fmlType::IntervalType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'interval'
-	//	'<'
-	//	support=PrimitiveNumberType (lopen?=']' | '[') infimum=Expression ',' supremum=Expression (']' | ropen?='[')
-	//	'>' ';';
+	//IntervalTypeDefinitionImpl returns fmlType::IntervalType
+	//    : {fmlType::IntervalType}
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        'interval'
+	//        '<'
+	//            support=PrimitiveNumberType
+	//            ( lopen?=']' | '[' )
+	//            infimum=Expression ',' supremum=Expression
+	//            ( ']' |  ropen?='[' )
+	//        '>' ';'
+	//    ;
 	public IntervalTypeDefinitionImplElements getIntervalTypeDefinitionImplAccess() {
 		return pIntervalTypeDefinitionImpl;
 	}
@@ -25685,10 +30487,14 @@
 	//// TODO
 	//// mettre à jour la grammaire par rapport au noyau, i.e.
 	//// CollectionKind | CollectionKind< size > | CollectionKind< type , size >
-	//CollectionType fmlType::CollectionType:
-	//	{fmlType::CollectionType} container=CollectionKind ('<'
-	//	support=DataType (',' (size=EInt | unbounded?='*'))?
-	//	'>')?;
+	//CollectionType returns fmlType::CollectionType
+	//    : {fmlType::CollectionType}
+	//        container = CollectionKind
+	//        ( '<'
+	//            support=DataType
+	//            ( ',' ( size=EInt | unbounded?='*' ) )?
+	//        '>' )?
+	//    ;
 	public CollectionTypeElements getCollectionTypeAccess() {
 		return pCollectionType;
 	}
@@ -25697,13 +30503,16 @@
 		return getCollectionTypeAccess().getRule();
 	}
 	
-	//CollectionTypeDefinition fmlType::CollectionType:
-	//	{fmlType::CollectionType} visibility=VisibilityKind? 'type'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	container=CollectionKind
-	//	'<'
-	//	support=DataType (',' (size=EInt | unbounded?='*'))?
-	//	'>' ';';
+	//CollectionTypeDefinition returns fmlType::CollectionType
+	//    : {fmlType::CollectionType}
+	//        ( visibility=VisibilityKind )? 'type'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        container = CollectionKind
+	//        '<'
+	//            support=DataType
+	//            ( ',' ( size=EInt | unbounded?='*' ) )?
+	//        '>' ';'
+	//    ;
 	public CollectionTypeDefinitionElements getCollectionTypeDefinitionAccess() {
 		return pCollectionTypeDefinition;
 	}
@@ -25712,12 +30521,15 @@
 		return getCollectionTypeDefinitionAccess().getRule();
 	}
 	
-	//CollectionTypeDefinitionImpl fmlType::CollectionType:
-	//	{fmlType::CollectionType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	container=CollectionKind
-	//	'<'
-	//	support=DataType (',' (size=EInt | unbounded?='*'))?
-	//	'>' ';';
+	//CollectionTypeDefinitionImpl returns fmlType::CollectionType
+	//    : {fmlType::CollectionType}
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        container = CollectionKind
+	//        '<'
+	//            support=DataType
+	//            ( ',' ( size=EInt | unbounded?='*' ) )?
+	//        '>' ';'
+	//    ;
 	public CollectionTypeDefinitionImplElements getCollectionTypeDefinitionImplAccess() {
 		return pCollectionTypeDefinitionImpl;
 	}
@@ -25726,8 +30538,15 @@
 		return getCollectionTypeDefinitionImplAccess().getRule();
 	}
 	
-	//enum CollectionKind returns fmlType::CollectionKind:
-	//	vector | rvector | list | set | bag | fifo | lifo;
+	//enum CollectionKind returns fmlType::CollectionKind
+	//    : vector = 'vector'
+	//    | rvector = 'rvector'
+	//    | list='list'
+	//    | set = 'set'
+	//    | bag = 'bag'
+	//    | fifo = 'fifo'
+	//    | lifo = 'lifo'
+	//    ;
 	public CollectionKindElements getCollectionKindAccess() {
 		return eCollectionKind;
 	}
@@ -25736,12 +30555,13 @@
 		return getCollectionKindAccess().getRule();
 	}
 	
-	//EnumerationType fmlType::EnumerationType:
-	//	{fmlType::EnumerationType}
-	//	'enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
-	//	'{'
-	//	literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)*
-	//	'}';
+	//EnumerationType returns fmlType::EnumerationType
+	//    : {fmlType::EnumerationType}
+	//        'enum'  ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+	//        '{'
+	//            literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+	//        '}'
+	//    ;
 	public EnumerationTypeElements getEnumerationTypeAccess() {
 		return pEnumerationType;
 	}
@@ -25750,13 +30570,15 @@
 		return getEnumerationTypeAccess().getRule();
 	}
 	
-	//EnumerationTypeDefinition fmlType::EnumerationType:
-	//	{fmlType::EnumerationType} visibility=VisibilityKind? typedef?='type'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
-	//	'{'
-	//	literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)*
-	//	'}';
+	//EnumerationTypeDefinition returns fmlType::EnumerationType
+	//    : {fmlType::EnumerationType}
+	//        ( visibility=VisibilityKind )? typedef?='type'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        'enum'  ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+	//        '{'
+	//            literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+	//        '}'
+	//    ;
 	public EnumerationTypeDefinitionElements getEnumerationTypeDefinitionAccess() {
 		return pEnumerationTypeDefinition;
 	}
@@ -25765,12 +30587,15 @@
 		return getEnumerationTypeDefinitionAccess().getRule();
 	}
 	
-	//EnumerationTypeDefinitionImpl fmlType::EnumerationType:
-	//	{fmlType::EnumerationType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	typedef?='enum' ('<' 'super:'? superType=[fmlType::EnumerationType|ESUfid] '>')?
-	//	'{'
-	//	literal+=EnumerationLiteral (',' literal+=EnumerationLiteral)*
-	//	'}';
+	//EnumerationTypeDefinitionImpl returns fmlType::EnumerationType
+	//    : {fmlType::EnumerationType}
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        typedef?='enum'
+	//        ( '<' ( 'super:' )? superType=[fmlType::EnumerationType|ESUfid] '>') ?
+	//        '{'
+	//            literal+= EnumerationLiteral  ( ',' literal+= EnumerationLiteral )*
+	//        '}'
+	//    ;
 	public EnumerationTypeDefinitionImplElements getEnumerationTypeDefinitionImplAccess() {
 		return pEnumerationTypeDefinitionImpl;
 	}
@@ -25779,8 +30604,10 @@
 		return getEnumerationTypeDefinitionImplAccess().getRule();
 	}
 	
-	//EnumerationLiteral fmlType::EnumerationLiteral:
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' value=LiteralTerminalExpression)?;
+	//EnumerationLiteral returns fmlType::EnumerationLiteral
+	//    : name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( '=' value=LiteralTerminalExpression )?
+	//    ;
 	public EnumerationLiteralElements getEnumerationLiteralAccess() {
 		return pEnumerationLiteral;
 	}
@@ -25789,13 +30616,14 @@
 		return getEnumerationLiteralAccess().getRule();
 	}
 	
-	//StructureType fmlType::StructureType:
-	//	{fmlType::StructureType}
-	//	'struct'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//StructureType returns fmlType::StructureType
+	//    : {fmlType::StructureType}
+	//        'struct'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public StructureTypeElements getStructureTypeAccess() {
 		return pStructureType;
 	}
@@ -25804,14 +30632,16 @@
 		return getStructureTypeAccess().getRule();
 	}
 	
-	//StructureTypeDefinition fmlType::StructureType:
-	//	{fmlType::StructureType} visibility=VisibilityKind? typedef?='type'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'struct'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//StructureTypeDefinition returns fmlType::StructureType
+	//    : {fmlType::StructureType}
+	//        ( visibility=VisibilityKind )? typedef?='type'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        'struct'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public StructureTypeDefinitionElements getStructureTypeDefinitionAccess() {
 		return pStructureTypeDefinition;
 	}
@@ -25820,13 +30650,15 @@
 		return getStructureTypeDefinitionAccess().getRule();
 	}
 	
-	//StructureTypeDefinitionImpl fmlType::StructureType:
-	//	{fmlType::StructureType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	typedef?='struct'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//StructureTypeDefinitionImpl returns fmlType::StructureType
+	//    : {fmlType::StructureType}
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        typedef?='struct'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public StructureTypeDefinitionImplElements getStructureTypeDefinitionImplAccess() {
 		return pStructureTypeDefinitionImpl;
 	}
@@ -25835,13 +30667,14 @@
 		return getStructureTypeDefinitionImplAccess().getRule();
 	}
 	
-	//UnionType fmlType::UnionType:
-	//	{fmlType::UnionType}
-	//	'union'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//UnionType returns fmlType::UnionType
+	//    : {fmlType::UnionType}
+	//        'union'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public UnionTypeElements getUnionTypeAccess() {
 		return pUnionType;
 	}
@@ -25850,14 +30683,16 @@
 		return getUnionTypeAccess().getRule();
 	}
 	
-	//UnionTypeDefinition fmlType::UnionType:
-	//	{fmlType::UnionType} visibility=VisibilityKind? typedef?='type'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'union'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//UnionTypeDefinition returns fmlType::UnionType
+	//    : {fmlType::UnionType}
+	//        ( visibility=VisibilityKind )? typedef?='type'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        'union'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public UnionTypeDefinitionElements getUnionTypeDefinitionAccess() {
 		return pUnionTypeDefinition;
 	}
@@ -25866,13 +30701,15 @@
 		return getUnionTypeDefinitionAccess().getRule();
 	}
 	
-	//UnionTypeDefinitionImpl fmlType::UnionType:
-	//	{fmlType::UnionType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	typedef?='union'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//UnionTypeDefinitionImpl returns fmlType::UnionType
+	//    : {fmlType::UnionType}
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        typedef?='union'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public UnionTypeDefinitionImplElements getUnionTypeDefinitionImplAccess() {
 		return pUnionTypeDefinitionImpl;
 	}
@@ -25881,13 +30718,14 @@
 		return getUnionTypeDefinitionImplAccess().getRule();
 	}
 	
-	//ChoiceType fmlType::ChoiceType:
-	//	{fmlType::ChoiceType}
-	//	'choice'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//ChoiceType returns fmlType::ChoiceType
+	//    : {fmlType::ChoiceType}
+	//        'choice'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public ChoiceTypeElements getChoiceTypeAccess() {
 		return pChoiceType;
 	}
@@ -25896,14 +30734,16 @@
 		return getChoiceTypeAccess().getRule();
 	}
 	
-	//ChoiceTypeDefinition fmlType::ChoiceType:
-	//	{fmlType::ChoiceType} visibility=VisibilityKind? typedef?='type'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'choice'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//ChoiceTypeDefinition returns fmlType::ChoiceType
+	//    : {fmlType::ChoiceType}
+	//        ( visibility=VisibilityKind )? typedef?='type'
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        'choice'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public ChoiceTypeDefinitionElements getChoiceTypeDefinitionAccess() {
 		return pChoiceTypeDefinition;
 	}
@@ -25912,13 +30752,15 @@
 		return getChoiceTypeDefinitionAccess().getRule();
 	}
 	
-	//ChoiceTypeDefinitionImpl fmlType::ChoiceType:
-	//	{fmlType::ChoiceType} name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	typedef?='choice'
-	//	'{'
-	//	'@property:'?
-	//	property+=Variable+
-	//	'}';
+	//ChoiceTypeDefinitionImpl returns fmlType::ChoiceType
+	//    : {fmlType::ChoiceType}
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        typedef?='choice'
+	//        '{'
+	//            ( '@property:' )?
+	//            ( property+=Variable )+
+	//        '}'
+	//    ;
 	public ChoiceTypeDefinitionImplElements getChoiceTypeDefinitionImplAccess() {
 		return pChoiceTypeDefinitionImpl;
 	}
@@ -25929,51 +30771,55 @@
 	
 	///*
 	//enum TypeSpecifyerKind returns TypeSpecifyerKind
-	//	: ALIAS = 'ALIAS'
-	//	| BOOLEAN = 'BOOLEAN'
-	//	| CHAR = 'CHAR'
-	//	| INT = 'INT'
-	//	| RATIONAL = 'RATIONAL'
-	//	| URATIONAL = 'URATIONAL'
-	//	| FLOAT = 'FLOAT'
-	//	| UFLOAT = 'UFLOAT'
-	//	| DOUBLE = 'DOUBLE'
-	//	| UDOUBLE = 'UDOUBLE'
-	//	| REAL = 'REAL'
-	//	| UREAL = 'UREAL'
-	//	| CTIME = 'CTIME'
-	//	| DTIME = 'DTIME'
-	//	| STRING = 'STRING'
-	//	| IDENTIFIER = 'IDENTIFIER'
-	//	| UFI = 'UFI'
-	//	| ARRAY = 'ARRAY'
-	//	| VECTOR = 'VECTOR'
-	//	| LIST = 'LIST'
-	//	| FIFO = 'FIFO'
-	//	| LIFO = 'LIFO'
-	//	| MULTISET = 'MULTISET'
-	//	| SET = 'SET'
-	//	| INTERVAL = 'INTERVAL'
-	//	| ENUM = 'ENUM'
-	//	| STRUCTURE = 'STRUCTURE'
-	//	| BUFFER = 'BUFFER'
-	//	| MESSAGE = 'MESSAGE'
-	//	| PORT = 'PORT'
-	//	| CONNECTION = 'CONNECTION'
-	//	| OPERATOR = 'OPERATOR'
-	//	| MACHINE = 'MACHINE'
-	//	| LAMBDA = 'LAMBDA'
-	//	| UNIVERSAL = 'UNIVERSAL'
-	//	;
-	//*/ ////////////////////////////////////////////////////////////////////////////////
+	//    : ALIAS = 'ALIAS'
+	//    | BOOLEAN = 'BOOLEAN'
+	//    | CHAR = 'CHAR'
+	//    | INT = 'INT'
+	//    | RATIONAL = 'RATIONAL'
+	//    | URATIONAL = 'URATIONAL'
+	//    | FLOAT = 'FLOAT'
+	//    | UFLOAT = 'UFLOAT'
+	//    | DOUBLE = 'DOUBLE'
+	//    | UDOUBLE = 'UDOUBLE'
+	//    | REAL = 'REAL'
+	//    | UREAL = 'UREAL'
+	//    | CTIME = 'CTIME'
+	//    | DTIME = 'DTIME'
+	//    | STRING = 'STRING'
+	//    | IDENTIFIER = 'IDENTIFIER'
+	//    | UFI = 'UFI'
+	//    | ARRAY = 'ARRAY'
+	//    | VECTOR = 'VECTOR'
+	//    | LIST = 'LIST'
+	//    | FIFO = 'FIFO'
+	//    | LIFO = 'LIFO'
+	//    | MULTISET = 'MULTISET'
+	//    | SET = 'SET'
+	//    | INTERVAL = 'INTERVAL'
+	//    | ENUM = 'ENUM'
+	//    | STRUCTURE = 'STRUCTURE'
+	//    | BUFFER = 'BUFFER'
+	//    | MESSAGE = 'MESSAGE'
+	//    | PORT = 'PORT'
+	//    | CONNECTION = 'CONNECTION'
+	//    | OPERATOR = 'OPERATOR'
+	//    | MACHINE = 'MACHINE'
+	//    | LAMBDA = 'LAMBDA'
+	//    | UNIVERSAL = 'UNIVERSAL'
+	//    ;
+	//*/
+	//////////////////////////////////////////////////////////////////////////////////
 	//// Modifier Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Modifier fmlInfra::Modifier:
-	//	{fmlInfra::Modifier} (static?='static'?
-	//	& final?='final'?
-	//	& volatile?='volatile'?
-	//	& transient?='transient'?
-	//	& optional?='optional'?);
+	//Modifier returns fmlInfra::Modifier
+	//    : {fmlInfra::Modifier}
+	//        ( ( static?='static' )?
+	//        & ( final ?='final'  )?
+	//        & ( volatile ?='volatile'  )?
+	//        & ( transient?='transient' )?
+	//        & ( optional?='optional' )?
+	//        )
+	//    ;
 	public ModifierElements getModifierAccess() {
 		return pModifier;
 	}
@@ -25985,14 +30831,20 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Function Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Function fmlInfra::Function:
-	//	{fmlInfra::Function} (visibility=VisibilityKind
-	//	& modifier=Modifier)?
-	//	'fun'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')?
-	//	'->' (resultSet=FormalParameterSet
-	//	| '(' resultSet=FormalParameterSet ')')
-	//	';';
+	//Function returns fmlInfra::Function
+	//    : {fmlInfra::Function}
+	//        ( visibility=VisibilityKind
+	//          & modifier=Modifier
+	//        )?
+	//        'fun'
+	//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        '->'
+	//        (     resultSet=FormalParameterSet
+	//        | '(' resultSet=FormalParameterSet ')'
+	//        )
+	//        ';'
+	//    ;
 	public FunctionElements getFunctionAccess() {
 		return pFunction;
 	}
@@ -26001,13 +30853,18 @@
 		return getFunctionAccess().getRule();
 	}
 	
-	//FunctionImpl fmlInfra::Function:
-	//	{fmlInfra::Function} modifier=Modifier?
-	//	'fun'
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('(' parameterSet=FormalParameterSet? ')')?
-	//	'->' (resultSet=FormalParameterSet
-	//	| '(' resultSet=FormalParameterSet ')')
-	//	';';
+	//FunctionImpl returns fmlInfra::Function
+	//    : {fmlInfra::Function}
+	//        ( modifier=Modifier )?
+	//        'fun'
+	//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        '->'
+	//        (     resultSet=FormalParameterSet
+	//        | '(' resultSet=FormalParameterSet ')'
+	//        )
+	//        ';'
+	//    ;
 	public FunctionImplElements getFunctionImplAccess() {
 		return pFunctionImpl;
 	}
@@ -26016,8 +30873,9 @@
 		return getFunctionImplAccess().getRule();
 	}
 	
-	//FunctionPublic fmlInfra::Function:
-	//	FunctionImpl;
+	//FunctionPublic returns fmlInfra::Function
+	//    : FunctionImpl
+	//    ;
 	public FunctionPublicElements getFunctionPublicAccess() {
 		return pFunctionPublic;
 	}
@@ -26026,8 +30884,9 @@
 		return getFunctionPublicAccess().getRule();
 	}
 	
-	//FunctionProtected fmlInfra::Function:
-	//	FunctionImpl;
+	//FunctionProtected returns fmlInfra::Function
+	//    : FunctionImpl
+	//    ;
 	public FunctionProtectedElements getFunctionProtectedAccess() {
 		return pFunctionProtected;
 	}
@@ -26036,8 +30895,9 @@
 		return getFunctionProtectedAccess().getRule();
 	}
 	
-	//FunctionPrivate fmlInfra::Function:
-	//	FunctionImpl;
+	//FunctionPrivate returns fmlInfra::Function
+	//    : FunctionImpl
+	//    ;
 	public FunctionPrivateElements getFunctionPrivateAccess() {
 		return pFunctionPrivate;
 	}
@@ -26049,11 +30909,14 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Variable Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//ModifierVar fmlInfra::Modifier:
-	//	{fmlInfra::Modifier} (static?='static'?
-	//	& final?=('final' | 'const')?
-	//	& volatile?='volatile'?
-	//	& transient?='transient'?);
+	//ModifierVar returns fmlInfra::Modifier
+	//    : {fmlInfra::Modifier}
+	//        ( ( static?='static' )?
+	//        & ( final ?=('final' | 'const') )?
+	//        & ( volatile ?='volatile'  )?
+	//        & ( transient?='transient' )?
+	//        )
+	//    ;
 	public ModifierVarElements getModifierVarAccess() {
 		return pModifierVar;
 	}
@@ -26062,13 +30925,21 @@
 		return getModifierVarAccess().getRule();
 	}
 	
-	//Variable fmlInfra::Variable:
-	//	(visibility=VisibilityKind?
-	//	& modifier=Modifier?) ('var' | const?='val'
-	//	| (const?='const' | const?='final') macro?='macro'? 'var'?
-	//	| macro?='macro' ('var' | const?='val')?) type=DataType reference?='&'?
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ('{' onWriteAction=OnWriteRoutine
-	//	'}' | ';');
+	//Variable returns fmlInfra::Variable
+	//    : ( ( visibility=VisibilityKind )?
+	//        & ( modifier=Modifier )?
+	//        )
+	//        ( 'var' | const?='val'
+	//        | ( const?='const' | const?='final' ) ( macro?='macro' )? ( 'var' )?
+	//        | macro?='macro' ( 'var' | const?='val' )?
+	//        )
+	//         type=DataType  ( reference?='&' )?
+	//         name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+	//        ( '=' defaultValue=Expression )?
+	//        ( ( '{' onWriteAction=OnWriteRoutine  '}' )
+	//        | ';'
+	//        )
+	//    ;
 	public VariableElements getVariableAccess() {
 		return pVariable;
 	}
@@ -26077,12 +30948,19 @@
 		return getVariableAccess().getRule();
 	}
 	
-	//VariableImpl fmlInfra::Variable:
-	//	modifier=Modifier? ('var' | const?='val'
-	//	| const?='const' macro?='macro'? 'var'?
-	//	| macro?='macro' ('var' | const?='val')?) type=DataType reference?='&'?
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ('{' onWriteAction=OnWriteRoutine
-	//	'}' | ';');
+	//VariableImpl returns fmlInfra::Variable
+	//    : ( modifier=Modifier )?
+	//        ( 'var' | const?='val'
+	//        | const?='const' ( macro?='macro' )? ( 'var' )?
+	//        | macro?='macro' ( 'var' | const?='val' )?
+	//        )
+	//         type=DataType  ( reference?='&' )?
+	//         name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+	//        ( '=' defaultValue=Expression )?
+	//        ( ( '{' onWriteAction=OnWriteRoutine  '}' )
+	//        | ';'
+	//        )
+	//    ;
 	public VariableImplElements getVariableImplAccess() {
 		return pVariableImpl;
 	}
@@ -26091,9 +30969,12 @@
 		return getVariableImplAccess().getRule();
 	}
 	
-	//OnWriteRoutine fmlInfra::Routine:
-	//	{fmlInfra::Routine} ('@write' | '@on_write') ('(' parameterSet=VariableRoutineParameterSet ')')?
-	//	bodyBlock=BlockStatement;
+	//OnWriteRoutine returns fmlInfra::Routine
+	//    : { fmlInfra::Routine }
+	//        ( '@write' | '@on_write' )
+	//        ( '(' parameterSet=VariableRoutineParameterSet ')' )?
+	//        bodyBlock=BlockStatement
+	//    ;
 	public OnWriteRoutineElements getOnWriteRoutineAccess() {
 		return pOnWriteRoutine;
 	}
@@ -26102,8 +30983,10 @@
 		return getOnWriteRoutineAccess().getRule();
 	}
 	
-	//VariableRoutineParameterSet fmlInfra::ParameterSet:
-	//	{fmlInfra::ParameterSet} parameter+=VariableRoutineParameter;
+	//VariableRoutineParameterSet returns fmlInfra::ParameterSet
+	//    : {fmlInfra::ParameterSet}
+	//        parameter+=VariableRoutineParameter
+	//    ;
 	public VariableRoutineParameterSetElements getVariableRoutineParameterSetAccess() {
 		return pVariableRoutineParameterSet;
 	}
@@ -26112,11 +30995,13 @@
 		return getVariableRoutineParameterSetAccess().getRule();
 	}
 	
-	//VariableRoutineParameter fmlInfra::Parameter:
-	//	FormalParameterOffset?
-	//	direction=ParameterDirectionKind?
-	//	type=DataType?
-	//	name=ESIdentifier ('=' defaultValue=Expression)?;
+	//VariableRoutineParameter returns fmlInfra::Parameter
+	//    : ( FormalParameterOffset )?
+	//        ( direction=ParameterDirectionKind )?
+	//        ( type=DataType )?
+	//        name=ESIdentifier
+	//        ( '=' defaultValue=Expression )?
+	//    ;
 	public VariableRoutineParameterElements getVariableRoutineParameterAccess() {
 		return pVariableRoutineParameter;
 	}
@@ -26125,8 +31010,9 @@
 		return getVariableRoutineParameterAccess().getRule();
 	}
 	
-	//VariablePublic fmlInfra::Variable:
-	//	VariableImpl;
+	//VariablePublic returns fmlInfra::Variable
+	//    : VariableImpl
+	//    ;
 	public VariablePublicElements getVariablePublicAccess() {
 		return pVariablePublic;
 	}
@@ -26135,8 +31021,9 @@
 		return getVariablePublicAccess().getRule();
 	}
 	
-	//VariableProtected fmlInfra::Variable:
-	//	VariableImpl;
+	//VariableProtected returns fmlInfra::Variable
+	//    : VariableImpl
+	//    ;
 	public VariableProtectedElements getVariableProtectedAccess() {
 		return pVariableProtected;
 	}
@@ -26145,8 +31032,9 @@
 		return getVariableProtectedAccess().getRule();
 	}
 	
-	//VariablePrivate fmlInfra::Variable:
-	//	VariableImpl;
+	//VariablePrivate returns fmlInfra::Variable
+	//    : VariableImpl
+	//    ;
 	public VariablePrivateElements getVariablePrivateAccess() {
 		return pVariablePrivate;
 	}
@@ -26155,10 +31043,17 @@
 		return getVariablePrivateAccess().getRule();
 	}
 	
-	//enum ParameterDirectionKind returns fmlInfra::ParameterDirectionKind:
-	//	in | in='input'
-	//	| inout | out | out='output'
-	//	| return;
+	//////////////////////////////////////////////////////////////////////////////////
+	//// Functional ParameterSet Rules
+	//////////////////////////////////////////////////////////////////////////////////
+	//enum ParameterDirectionKind returns fmlInfra::ParameterDirectionKind
+	//    : in     = 'in'
+	//    | in     = 'input'
+	//    | inout  = 'inout'
+	//    | out    = 'out'
+	//    | out    = 'output'
+	//    | return = 'return'
+	//    ;
 	public ParameterDirectionKindElements getParameterDirectionKindAccess() {
 		return eParameterDirectionKind;
 	}
@@ -26167,8 +31062,11 @@
 		return getParameterDirectionKindAccess().getRule();
 	}
 	
-	//FunctionalParameterSet fmlInfra::ParameterSet:
-	//	{fmlInfra::ParameterSet} parameter+=FunctionalParameter (',' parameter+=FunctionalParameter)*;
+	//FunctionalParameterSet returns fmlInfra::ParameterSet
+	//    : {fmlInfra::ParameterSet}
+	//        parameter+=FunctionalParameter
+	//        ( ',' parameter+=FunctionalParameter )*
+	//    ;
 	public FunctionalParameterSetElements getFunctionalParameterSetAccess() {
 		return pFunctionalParameterSet;
 	}
@@ -26177,9 +31075,12 @@
 		return getFunctionalParameterSetAccess().getRule();
 	}
 	
-	//FunctionalParameter fmlInfra::Parameter:
-	//	{fmlInfra::Parameter} direction=ParameterDirectionKind? type=DataType
-	//	name=ESIdentifier ('=' defaultValue=Expression)?;
+	//FunctionalParameter returns fmlInfra::Parameter
+	//    : {fmlInfra::Parameter}
+	//        ( direction=ParameterDirectionKind )?  type=DataType
+	//         name=ESIdentifier
+	//        ( '=' defaultValue=Expression )?
+	//    ;
 	public FunctionalParameterElements getFunctionalParameterAccess() {
 		return pFunctionalParameter;
 	}
@@ -26188,8 +31089,11 @@
 		return getFunctionalParameterAccess().getRule();
 	}
 	
-	//FormalParameterSet fmlInfra::ParameterSet:
-	//	{fmlInfra::ParameterSet} parameter+=FormalParameter (',' parameter+=FormalParameter)*;
+	//FormalParameterSet returns fmlInfra::ParameterSet
+	//    : {fmlInfra::ParameterSet}
+	//        parameter+=FormalParameter
+	//        ( ',' parameter+=FormalParameter )*
+	//    ;
 	public FormalParameterSetElements getFormalParameterSetAccess() {
 		return pFormalParameterSet;
 	}
@@ -26198,10 +31102,13 @@
 		return getFormalParameterSetAccess().getRule();
 	}
 	
-	//FormalParameter fmlInfra::Parameter:
-	//	{fmlInfra::Parameter} FormalParameterOffset?
-	//	direction=ParameterDirectionKind? modifier=Modifier?
-	//	type=DataType name=ESIdentifier? ('=' defaultValue=Expression)?;
+	//FormalParameter returns fmlInfra::Parameter
+	//    : {fmlInfra::Parameter}
+	//        ( FormalParameterOffset )?
+	//        ( direction=ParameterDirectionKind )? ( modifier=Modifier )?
+	//        type=DataType  ( name=ESIdentifier )?
+	//        ( '=' defaultValue=Expression )?
+	//    ;
 	public FormalParameterElements getFormalParameterAccess() {
 		return pFormalParameter;
 	}
@@ -26210,8 +31117,9 @@
 		return getFormalParameterAccess().getRule();
 	}
 	
-	//FormalParameterOffset:
-	//	EOffset;
+	//FormalParameterOffset
+	//    : EOffset
+	//    ;
 	public FormalParameterOffsetElements getFormalParameterOffsetAccess() {
 		return pFormalParameterOffset;
 	}
@@ -26223,12 +31131,26 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Block ParameterSet Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//BlockParameterSet fmlInfra::ParameterSet:
-	//	{fmlInfra::ParameterSet} ('input' (parameter+=ParameterInput
-	//	| '{' parameter+=ParameterInput+ '}') | 'inout' (parameter+=ParameterInout
-	//	| '{' parameter+=ParameterInout+ '}') | 'output' (parameter+=ParameterOutput
-	//	| '{' parameter+=ParameterOutput+ '}') | 'return' (parameter+=ParameterReturn
-	//	| '{' parameter+=ParameterReturn+ '}'))*;
+	//BlockParameterSet returns fmlInfra::ParameterSet
+	//    : {fmlInfra::ParameterSet}
+	//        ( 'input'
+	//            ( parameter+=ParameterInput
+	//            | '{' ( parameter+=ParameterInput )+ '}'
+	//            )
+	//        | 'inout'
+	//            ( parameter+=ParameterInout
+	//            | '{' ( parameter+=ParameterInout )+ '}'
+	//            )
+	//        | 'output'
+	//            ( parameter+=ParameterOutput
+	//            | '{' ( parameter+=ParameterOutput )+ '}'
+	//            )
+	//        | 'return'
+	//            ( parameter+=ParameterReturn
+	//            | '{' ( parameter+=ParameterReturn )+ '}'
+	//            )
+	//        )*
+	//    ;
 	public BlockParameterSetElements getBlockParameterSetAccess() {
 		return pBlockParameterSet;
 	}
@@ -26237,11 +31159,14 @@
 		return getBlockParameterSetAccess().getRule();
 	}
 	
-	//Parameter fmlInfra::Parameter:
-	//	{fmlInfra::Parameter} visibility=VisibilityKind?
-	//	direction=ParameterDirectionKind
-	//	'var' type=DataType
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ';';
+	//Parameter returns fmlInfra::Parameter
+	//    : {fmlInfra::Parameter}
+	//        ( visibility=VisibilityKind )?
+	//        direction=ParameterDirectionKind
+	//        'var'  type=DataType
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( '=' defaultValue=Expression )?  ';'
+	//    ;
 	public ParameterElements getParameterAccess() {
 		return pParameter;
 	}
@@ -26250,10 +31175,12 @@
 		return getParameterAccess().getRule();
 	}
 	
-	//ParameterImpl fmlInfra::Parameter:
-	//	{fmlInfra::Parameter}
-	//	'var' type=DataType
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ('=' defaultValue=Expression)? ';';
+	//ParameterImpl returns fmlInfra::Parameter
+	//    : {fmlInfra::Parameter}
+	//        'var'  type=DataType
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( '=' defaultValue=Expression )?  ';'
+	//    ;
 	public ParameterImplElements getParameterImplAccess() {
 		return pParameterImpl;
 	}
@@ -26262,8 +31189,9 @@
 		return getParameterImplAccess().getRule();
 	}
 	
-	//ParameterInput fmlInfra::Parameter:
-	//	ParameterImpl;
+	//ParameterInput returns fmlInfra::Parameter
+	//    : ParameterImpl
+	//    ;
 	public ParameterInputElements getParameterInputAccess() {
 		return pParameterInput;
 	}
@@ -26272,8 +31200,9 @@
 		return getParameterInputAccess().getRule();
 	}
 	
-	//ParameterInout fmlInfra::Parameter:
-	//	ParameterImpl;
+	//ParameterInout returns fmlInfra::Parameter
+	//    : ParameterImpl
+	//    ;
 	public ParameterInoutElements getParameterInoutAccess() {
 		return pParameterInout;
 	}
@@ -26282,8 +31211,9 @@
 		return getParameterInoutAccess().getRule();
 	}
 	
-	//ParameterOutput fmlInfra::Parameter:
-	//	ParameterImpl;
+	//ParameterOutput returns fmlInfra::Parameter
+	//    : ParameterImpl
+	//    ;
 	public ParameterOutputElements getParameterOutputAccess() {
 		return pParameterOutput;
 	}
@@ -26292,8 +31222,9 @@
 		return getParameterOutputAccess().getRule();
 	}
 	
-	//ParameterReturn fmlInfra::Parameter:
-	//	ParameterImpl;
+	//ParameterReturn returns fmlInfra::Parameter
+	//    : ParameterImpl
+	//    ;
 	public ParameterReturnElements getParameterReturnAccess() {
 		return pParameterReturn;
 	}
@@ -26305,9 +31236,13 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Buffer Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//BufferContainerType fmlType::CollectionType:
-	//	{fmlType::CollectionType} container=BufferContainerKind ('<' ('size:'? size=EInt | unbounded?='*')? '>'
-	//	| '[' ('size:'? size=EInt | unbounded?='*')? ']')?;
+	//BufferContainerType returns fmlType::CollectionType
+	//    : {fmlType::CollectionType}
+	//        container = BufferContainerKind
+	//        ( '<' ( ( 'size:' )? size=EInt | unbounded?='*' )? '>'
+	//        | '[' ( ( 'size:' )? size=EInt | unbounded?='*' )? ']'
+	//        )?
+	//    ;
 	public BufferContainerTypeElements getBufferContainerTypeAccess() {
 		return pBufferContainerType;
 	}
@@ -26316,8 +31251,12 @@
 		return getBufferContainerTypeAccess().getRule();
 	}
 	
-	//enum BufferContainerKind returns fmlType::CollectionKind:
-	//	set | bag | fifo | lifo;
+	//enum BufferContainerKind returns fmlType::CollectionKind
+	//    : set  = 'set'
+	//    | bag  = 'bag'
+	//    | fifo = 'fifo'
+	//    | lifo = 'lifo'
+	//    ;
 	public BufferContainerKindElements getBufferContainerKindAccess() {
 		return eBufferContainerKind;
 	}
@@ -26326,11 +31265,14 @@
 		return getBufferContainerKindAccess().getRule();
 	}
 	
-	//Buffer fmlInfra::Buffer:
-	//	{fmlInfra::Buffer} (visibility=VisibilityKind
-	//	& modifier=Modifier)?
-	//	'buffer' type=BufferContainerType
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ';';
+	//Buffer returns fmlInfra::Buffer
+	//    : {fmlInfra::Buffer}
+	//        ( visibility=VisibilityKind
+	//          & modifier=Modifier
+	//        )?
+	//        'buffer' type=BufferContainerType
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )? ';'
+	//    ;
 	public BufferElements getBufferAccess() {
 		return pBuffer;
 	}
@@ -26339,10 +31281,12 @@
 		return getBufferAccess().getRule();
 	}
 	
-	//BufferImpl fmlInfra::Buffer:
-	//	{fmlInfra::Buffer} modifier=Modifier?
-	//	'buffer' type=BufferContainerType
-	//	name=ESIdentifier unrestrictedName=UnrestrictedName? ';';
+	//BufferImpl returns fmlInfra::Buffer
+	//    : {fmlInfra::Buffer}
+	//        ( modifier=Modifier )?
+	//        'buffer' type=BufferContainerType
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )? ';'
+	//    ;
 	public BufferImplElements getBufferImplAccess() {
 		return pBufferImpl;
 	}
@@ -26351,8 +31295,9 @@
 		return getBufferImplAccess().getRule();
 	}
 	
-	//BufferPublic fmlInfra::Buffer:
-	//	BufferImpl;
+	//BufferPublic returns fmlInfra::Buffer
+	//    : BufferImpl
+	//    ;
 	public BufferPublicElements getBufferPublicAccess() {
 		return pBufferPublic;
 	}
@@ -26361,8 +31306,9 @@
 		return getBufferPublicAccess().getRule();
 	}
 	
-	//BufferProtected fmlInfra::Buffer:
-	//	BufferImpl;
+	//BufferProtected returns fmlInfra::Buffer
+	//    : BufferImpl
+	//    ;
 	public BufferProtectedElements getBufferProtectedAccess() {
 		return pBufferProtected;
 	}
@@ -26371,8 +31317,9 @@
 		return getBufferProtectedAccess().getRule();
 	}
 	
-	//BufferPrivate fmlInfra::Buffer:
-	//	BufferImpl;
+	//BufferPrivate returns fmlInfra::Buffer
+	//    : BufferImpl
+	//    ;
 	public BufferPrivateElements getBufferPrivateAccess() {
 		return pBufferPrivate;
 	}
@@ -26384,12 +31331,18 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Port rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Port fmlInfra::Port:
-	//	{fmlInfra::Port} (visibility=VisibilityKind
-	//	& modifier=Modifier)? (direction=ChannelDirection 'port'
-	//	| 'port' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-	//	parameterSet=FormalParameterSet? ')')?
-	//	';';
+	//Port returns fmlInfra::Port
+	//    : {fmlInfra::Port}
+	//        ( visibility=VisibilityKind
+	//          & modifier=Modifier
+	//        )?
+	//        ( direction=ChannelDirection  'port'
+	//        | 'port'  ( direction=ChannelDirection )?
+	//        )
+	//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        ';'
+	//    ;
 	public PortElements getPortAccess() {
 		return pPort;
 	}
@@ -26398,11 +31351,16 @@
 		return getPortAccess().getRule();
 	}
 	
-	//PortImpl fmlInfra::Port:
-	//	{fmlInfra::Port} modifier=Modifier? (direction=ChannelDirection 'port'
-	//	| 'port' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-	//	parameterSet=FormalParameterSet? ')')?
-	//	';';
+	//PortImpl returns fmlInfra::Port
+	//    : {fmlInfra::Port}
+	//        ( modifier=Modifier )?
+	//        ( direction=ChannelDirection  'port'
+	//        | 'port'  ( direction=ChannelDirection )?
+	//        )
+	//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        ';'
+	//    ;
 	public PortImplElements getPortImplAccess() {
 		return pPortImpl;
 	}
@@ -26411,8 +31369,9 @@
 		return getPortImplAccess().getRule();
 	}
 	
-	//PortPublic fmlInfra::Port:
-	//	PortImpl;
+	//PortPublic returns fmlInfra::Port
+	//    : PortImpl
+	//    ;
 	public PortPublicElements getPortPublicAccess() {
 		return pPortPublic;
 	}
@@ -26421,8 +31380,9 @@
 		return getPortPublicAccess().getRule();
 	}
 	
-	//PortProtected fmlInfra::Port:
-	//	PortImpl;
+	//PortProtected returns fmlInfra::Port
+	//    : PortImpl
+	//    ;
 	public PortProtectedElements getPortProtectedAccess() {
 		return pPortProtected;
 	}
@@ -26431,8 +31391,9 @@
 		return getPortProtectedAccess().getRule();
 	}
 	
-	//PortPrivate fmlInfra::Port:
-	//	PortImpl;
+	//PortPrivate returns fmlInfra::Port
+	//    : PortImpl
+	//    ;
 	public PortPrivateElements getPortPrivateAccess() {
 		return pPortPrivate;
 	}
@@ -26444,11 +31405,16 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Signal rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Signal fmlInfra::Signal:
-	//	{fmlInfra::Signal} visibility=VisibilityKind? (direction=ChannelDirection 'signal'
-	//	| 'signal' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-	//	parameterSet=FormalParameterSet? ')')?
-	//	';';
+	//Signal returns fmlInfra::Signal
+	//    : {fmlInfra::Signal}
+	//        ( visibility=VisibilityKind )?
+	//        ( direction=ChannelDirection  'signal'
+	//        | 'signal'  ( direction=ChannelDirection )?
+	//        )
+	//        name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        ';'
+	//    ;
 	public SignalElements getSignalAccess() {
 		return pSignal;
 	}
@@ -26457,11 +31423,15 @@
 		return getSignalAccess().getRule();
 	}
 	
-	//SignalImpl fmlInfra::Signal:
-	//	{fmlInfra::Signal} (direction=ChannelDirection 'signal'
-	//	| 'signal' direction=ChannelDirection?) name=ESIdentifier unrestrictedName=UnrestrictedName? ('('
-	//	parameterSet=FormalParameterSet? ')')?
-	//	';';
+	//SignalImpl returns fmlInfra::Signal
+	//    : {fmlInfra::Signal}
+	//        ( direction=ChannelDirection  'signal'
+	//        | 'signal'  ( direction=ChannelDirection )?
+	//        )
+	//        name=ESIdentifier  ( unrestrictedName=UnrestrictedName )?
+	//        ( '(' ( parameterSet=FormalParameterSet )? ')' )?
+	//        ';'
+	//    ;
 	public SignalImplElements getSignalImplAccess() {
 		return pSignalImpl;
 	}
@@ -26470,8 +31440,9 @@
 		return getSignalImplAccess().getRule();
 	}
 	
-	//SignalPublic fmlInfra::Signal:
-	//	SignalImpl;
+	//SignalPublic returns fmlInfra::Signal
+	//    : SignalImpl
+	//    ;
 	public SignalPublicElements getSignalPublicAccess() {
 		return pSignalPublic;
 	}
@@ -26480,8 +31451,9 @@
 		return getSignalPublicAccess().getRule();
 	}
 	
-	//SignalProtected fmlInfra::Signal:
-	//	SignalImpl;
+	//SignalProtected returns fmlInfra::Signal
+	//    : SignalImpl
+	//    ;
 	public SignalProtectedElements getSignalProtectedAccess() {
 		return pSignalProtected;
 	}
@@ -26490,8 +31462,9 @@
 		return getSignalProtectedAccess().getRule();
 	}
 	
-	//SignalPrivate fmlInfra::Signal:
-	//	SignalImpl;
+	//SignalPrivate returns fmlInfra::Signal
+	//    : SignalImpl
+	//    ;
 	public SignalPrivateElements getSignalPrivateAccess() {
 		return pSignalPrivate;
 	}
@@ -26500,8 +31473,14 @@
 		return getSignalPrivateAccess().getRule();
 	}
 	
-	//enum ChannelDirection returns fmlInfra::ChannelDirection:
-	//	input | inout | output;
+	//////////////////////////////////////////////////////////////////////////////////
+	//// Channel rules
+	//////////////////////////////////////////////////////////////////////////////////
+	//enum ChannelDirection returns fmlInfra::ChannelDirection
+	//    : input  = 'input'
+	//    | inout  = 'inout'
+	//    | output = 'output'
+	//    ;
 	public ChannelDirectionElements getChannelDirectionAccess() {
 		return eChannelDirection;
 	}
@@ -26510,12 +31489,16 @@
 		return getChannelDirectionAccess().getRule();
 	}
 	
-	//Channel fmlInfra::Channel:
-	//	{fmlInfra::Channel} (visibility=VisibilityKind
-	//	& modifier=Modifier)?
-	//	'channel' name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'{' (signal+=SignalReference ';')+
-	//	'}';
+	//Channel returns fmlInfra::Channel
+	//    : {fmlInfra::Channel}
+	//        ( visibility=VisibilityKind
+	//          & modifier=Modifier
+	//        )?
+	//        'channel' name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        '{'
+	//            ( signal+=SignalReference ';' )+
+	//        '}'
+	//    ;
 	public ChannelElements getChannelAccess() {
 		return pChannel;
 	}
@@ -26524,8 +31507,9 @@
 		return getChannelAccess().getRule();
 	}
 	
-	//SignalReference fmlInfra::Signal:
-	//	direction=ChannelDirection? name=ESIdentifier;
+	//SignalReference returns fmlInfra::Signal
+	//    : ( direction=ChannelDirection )? name=ESIdentifier
+	//    ;
 	public SignalReferenceElements getSignalReferenceAccess() {
 		return pSignalReference;
 	}
@@ -26534,11 +31518,14 @@
 		return getSignalReferenceAccess().getRule();
 	}
 	
-	//Channelimpl fmlInfra::Channel:
-	//	{fmlInfra::Channel} modifier=Modifier?
-	//	'channel' name=ESIdentifier unrestrictedName=UnrestrictedName?
-	//	'{' (signal+=SignalReference ';')+
-	//	'}';
+	//Channelimpl returns fmlInfra::Channel
+	//    : {fmlInfra::Channel}
+	//        ( modifier=Modifier )?
+	//        'channel' name=ESIdentifier ( unrestrictedName=UnrestrictedName )?
+	//        '{'
+	//            ( signal+=SignalReference ';' )+
+	//        '}'
+	//    ;
 	public ChannelimplElements getChannelimplAccess() {
 		return pChannelimpl;
 	}
@@ -26547,8 +31534,9 @@
 		return getChannelimplAccess().getRule();
 	}
 	
-	//ChannelPublic fmlInfra::Channel:
-	//	Channelimpl;
+	//ChannelPublic returns fmlInfra::Channel
+	//    : Channelimpl
+	//    ;
 	public ChannelPublicElements getChannelPublicAccess() {
 		return pChannelPublic;
 	}
@@ -26557,8 +31545,9 @@
 		return getChannelPublicAccess().getRule();
 	}
 	
-	//ChannelProtected fmlInfra::Channel:
-	//	Channelimpl;
+	//ChannelProtected returns fmlInfra::Channel
+	//    : Channelimpl
+	//    ;
 	public ChannelProtectedElements getChannelProtectedAccess() {
 		return pChannelProtected;
 	}
@@ -26567,8 +31556,9 @@
 		return getChannelProtectedAccess().getRule();
 	}
 	
-	//ChannelPrivate fmlInfra::Channel:
-	//	Channelimpl;
+	//ChannelPrivate returns fmlInfra::Channel
+	//    : Channelimpl
+	//    ;
 	public ChannelPrivateElements getChannelPrivateAccess() {
 		return pChannelPrivate;
 	}
@@ -26580,19 +31570,46 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Section Transition Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Transition fmlStmchn::Transition:
-	//	{fmlStmchn::Transition} transient?='transient'? 'transition'
-	//	moe=TransitionMoe?
-	//	name=ESIdentifier? unrestrictedName=UnrestrictedName? ('{' (('@trigger:' trigger+=TransitionTrigger*)?
-	//	(guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard | '@tguard:')?
-	//	'@effect:' effect=TransitionEffect?
-	//	| behavior=TransitionBehavior)?
-	//	'}' ('-->' (target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ';')?
-	//	| '-->' (target=[fmlStmchn::Vertex|ESUfid] | targetExpression=ValuePureNamedMachineExpression) ('{' (('@trigger:'
-	//	trigger+=TransitionTrigger*)? (guard=TransitionGuard | '@guard:')? (tguard=TransitionTimedGuard | '@tguard:')?
-	//	'@effect:' effect=TransitionEffect?
-	//	| behavior=TransitionBehavior)?
-	//	'}' | ';'));
+	//Transition returns fmlStmchn::Transition
+	//    : {fmlStmchn::Transition} (transient?='transient')? 'transition'
+	//        ( moe=TransitionMoe )?
+	//        ( name=ESIdentifier )?  ( unrestrictedName=UnrestrictedName )?
+	////        ( ( behavior=BlockStatement '-->' target=[fmlStmchn::Vertex|ESUfid] ';' )
+	////        | ( '-->' target=[fmlStmchn::Vertex|ESUfid] (behavior=BlockStatement | ';') )
+	////        )
+	//        ( ( '{'
+	//            ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+	//                ( guard  = TransitionGuard      | '@guard:' )?
+	//                ( tguard = TransitionTimedGuard | '@tguard:')?
+	//                '@effect:'  ( effect = TransitionEffect  )?
+	//              )
+	//            | behavior=TransitionBehavior
+	//            )?
+	//            '}'
+	//            ( '-->'
+	//                ( target=[fmlStmchn::Vertex|ESUfid]
+	//                | targetExpression=ValuePureNamedMachineExpression
+	//                ) ';'
+	//            )?
+	//          )
+	//        | ( '-->'
+	//            ( target=[fmlStmchn::Vertex|ESUfid]
+	//            | targetExpression=ValuePureNamedMachineExpression
+	//            )
+	//            ( ( '{'
+	//                ( ( ( '@trigger:' ( trigger+= TransitionTrigger )* )?
+	//                    ( guard  = TransitionGuard      | '@guard:' )?
+	//                    ( tguard = TransitionTimedGuard | '@tguard:')?
+	//                    '@effect:'  ( effect = TransitionEffect  )?
+	//                  )
+	//                | behavior=TransitionBehavior
+	//                )?
+	//                '}' )
+	//            | ';'
+	//            )
+	//          )
+	//        )
+	//    ;
 	public TransitionElements getTransitionAccess() {
 		return pTransition;
 	}
@@ -26601,11 +31618,16 @@
 		return getTransitionAccess().getRule();
 	}
 	
-	//TransitionMoe fmlStmchn::TransitionMoe:
-	//	'<' ('moc:'? (moc=TransitionMoc ('&' isElse?='else')?
-	//	| isElse?='else') (',' 'prior:'? priority=EInt)?
-	//	| 'prior:'? priority=EInt)
-	//	'>';
+	//TransitionMoe returns fmlStmchn::TransitionMoe
+	//    : '<'
+	//        ( ('moc:')?
+	//            ( moc=TransitionMoc  ( '&' isElse?='else' )?
+	//            | isElse?='else'
+	//            ) ( ',' ( 'prior:' )? priority=EInt )?
+	//        | ( 'prior:' )? priority=EInt
+	//        )
+	//      '>'
+	//    ;
 	public TransitionMoeElements getTransitionMoeAccess() {
 		return pTransitionMoe;
 	}
@@ -26614,8 +31636,11 @@
 		return getTransitionMoeAccess().getRule();
 	}
 	
-	//enum TransitionMoc returns fmlStmchn::TransitionMoc:
-	//	simple | abort | final;
+	//enum TransitionMoc returns fmlStmchn::TransitionMoc
+	//    : simple = 'simple'
+	//    | abort  = 'abort'
+	//    | final  = 'final'
+	//    ;
 	public TransitionMocElements getTransitionMocAccess() {
 		return eTransitionMoc;
 	}
@@ -26624,9 +31649,11 @@
 		return getTransitionMocAccess().getRule();
 	}
 	
-	//TransitionBehavior fmlStmnt::BlockStatement:
-	//	{fmlStmnt::BlockStatement} op=BlockStatementScheduler?
-	//	statement+=Statement*;
+	//TransitionBehavior returns fmlStmnt::BlockStatement
+	//    : {fmlStmnt::BlockStatement}
+	//        ( op=BlockStatementScheduler )?
+	//         ( statement+=Statement )*
+	//    ;
 	public TransitionBehaviorElements getTransitionBehaviorAccess() {
 		return pTransitionBehavior;
 	}
@@ -26635,8 +31662,9 @@
 		return getTransitionBehaviorAccess().getRule();
 	}
 	
-	//TransitionTrigger fmlStmnt::InputComStatement:
-	//	InputComStatement;
+	//TransitionTrigger returns fmlStmnt::InputComStatement
+	//    : InputComStatement
+	//    ;
 	public TransitionTriggerElements getTransitionTriggerAccess() {
 		return pTransitionTrigger;
 	}
@@ -26645,13 +31673,19 @@
 		return getTransitionTriggerAccess().getRule();
 	}
 	
-	//TransitionGuard fmlStmnt::AbstractGuardStatement:
-	//	{fmlStmnt::GuardStatement}
-	//	'@guard<' condition=TransitionGuardExpression
-	//	| '@guard:' ({fmlStmnt::GuardStatement} ('[' condition=Expression ']'
-	//	| condition=Expression) | GuardStatement
-	//	| EventGuardStatement
-	//	| CheckSatGuardStatement);
+	//TransitionGuard returns fmlStmnt::AbstractGuardStatement
+	//    : {fmlStmnt::GuardStatement}
+	//        '@guard<' condition=TransitionGuardExpression
+	//    | '@guard:'
+	//        ( {fmlStmnt::GuardStatement}
+	//            ( '[' condition=Expression ']'
+	//            | condition=Expression
+	//            )
+	//        | GuardStatement
+	//        | EventGuardStatement
+	//        | CheckSatGuardStatement
+	//        )
+	//    ;
 	public TransitionGuardElements getTransitionGuardAccess() {
 		return pTransitionGuard;
 	}
@@ -26660,9 +31694,11 @@
 		return getTransitionGuardAccess().getRule();
 	}
 	
-	//TransitionGuardExpression fmlExpr::Expression:
-	//	{fmlExpr::LogicalAssociativeExpression} operator=('&&' | 'and' | '||' | 'or') '>:'
-	//	operand+=BitwiseOrExpression+;
+	//TransitionGuardExpression returns fmlExpr::Expression
+	//    : {fmlExpr::LogicalAssociativeExpression}
+	//        operator=( '&&' | 'and' | '||' | 'or' ) '>:'
+	//        ( operand+=BitwiseOrExpression )+
+	//    ;
 	public TransitionGuardExpressionElements getTransitionGuardExpressionAccess() {
 		return pTransitionGuardExpression;
 	}
@@ -26671,11 +31707,17 @@
 		return getTransitionGuardExpressionAccess().getRule();
 	}
 	
-	//TransitionTimedGuard fmlStmnt::TimedGuardStatement:
-	//	{fmlStmnt::TimedGuardStatement}
-	//	'@tguard<' condition=TransitionGuardExpression
-	//	| '@tguard:' ({fmlStmnt::TimedGuardStatement} ('{' condition=Expression '}'
-	//	| condition=Expression) | TimedGuardStatement);
+	//TransitionTimedGuard returns fmlStmnt::TimedGuardStatement
+	//    : {fmlStmnt::TimedGuardStatement}
+	//        '@tguard<' condition=TransitionGuardExpression
+	//    | '@tguard:'
+	//        ( {fmlStmnt::TimedGuardStatement}
+	//            ( '{' condition=Expression '}'
+	//            | condition=Expression
+	//            )
+	//        | TimedGuardStatement
+	//        )
+	//    ;
 	public TransitionTimedGuardElements getTransitionTimedGuardAccess() {
 		return pTransitionTimedGuard;
 	}
@@ -26684,8 +31726,12 @@
 		return getTransitionTimedGuardAccess().getRule();
 	}
 	
-	//TransitionEffect fmlStmnt::Statement:
-	//	TransitionEffectStatement ({fmlStmnt::BlockStatement.statement+=current} statement+=TransitionEffectStatement)*;
+	//TransitionEffect returns fmlStmnt::Statement
+	//    : TransitionEffectStatement
+	//        ( {fmlStmnt::BlockStatement.statement+=current}
+	//            statement+=TransitionEffectStatement
+	//        )*
+	//    ;
 	public TransitionEffectElements getTransitionEffectAccess() {
 		return pTransitionEffect;
 	}
@@ -26694,17 +31740,18 @@
 		return getTransitionEffectAccess().getRule();
 	}
 	
-	//TransitionEffectStatement fmlStmnt::Statement:
-	//	ExpressionStatement
-	//	| OutputComStatement
-	//	| IfStatement
-	//	| WhileDoStatement
-	//	| DoWhileStatement
-	//	| ForStatement
-	//	| ForEachStatement
-	//	| InterruptStatement
-	//	| ActivityStatement
-	//	| InvokeStatement;
+	//TransitionEffectStatement returns fmlStmnt::Statement
+	//    : ExpressionStatement
+	//    | OutputComStatement
+	//    | IfStatement
+	//    | WhileDoStatement
+	//    | DoWhileStatement
+	//    | ForStatement
+	//    | ForEachStatement
+	//    | InterruptStatement
+	//    | ActivityStatement
+	//    | InvokeStatement
+	//    ;
 	public TransitionEffectStatementElements getTransitionEffectStatementAccess() {
 		return pTransitionEffectStatement;
 	}
@@ -26716,26 +31763,26 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Statement Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Statement fmlStmnt::Statement:
-	//	BlockStatement
-	//	| ExpressionStatement
-	//	| GuardStatement
-	//	| TimedGuardStatement
-	//	| EventGuardStatement
-	//	| CheckSatGuardStatement
-	//	| InputComStatement
-	//	| OutputComStatement
-	//	| IfStatement
-	//	| WhileDoStatement
-	//	| DoWhileStatement
-	//	| ForStatement
-	//	| ForEachStatement
-	//	| InterruptStatement
-	//	| ActivityStatement
-	//	| InvokeStatement
-	//	//	| ObserverStatement
-	//
-	//	| MetaStatement;
+	//Statement returns fmlStmnt::Statement
+	//     : BlockStatement
+	//     | ExpressionStatement
+	//    | GuardStatement
+	//    | TimedGuardStatement
+	//    | EventGuardStatement
+	//    | CheckSatGuardStatement
+	//    | InputComStatement
+	//    | OutputComStatement
+	//    | IfStatement
+	//    | WhileDoStatement
+	//    | DoWhileStatement
+	//    | ForStatement
+	//    | ForEachStatement
+	//    | InterruptStatement
+	//    | ActivityStatement
+	//    | InvokeStatement
+	////    | ObserverStatement
+	//    | MetaStatement
+	//    ;
 	public StatementElements getStatementAccess() {
 		return pStatement;
 	}
@@ -26744,12 +31791,13 @@
 		return getStatementAccess().getRule();
 	}
 	
-	//BlockStatement fmlStmnt::BlockStatement:
-	//	{fmlStmnt::BlockStatement}
-	//	'{'
-	//	op=BlockStatementScheduler?
-	//	statement+=Statement*
-	//	'}';
+	//BlockStatement returns fmlStmnt::BlockStatement
+	//    : {fmlStmnt::BlockStatement}
+	//        '{'
+	//            ( op=BlockStatementScheduler )?
+	//             ( statement+=Statement )*
+	//         '}'
+	//    ;
 	public BlockStatementElements getBlockStatementAccess() {
 		return pBlockStatement;
 	}
@@ -26758,17 +31806,18 @@
 		return getBlockStatementAccess().getRule();
 	}
 	
-	//BlockStatementScheduler:
-	//	'|;|' | '|§|' | '|;;|' | '|.|' | '|/;|'
-	//	| '|i|' | '|interleaving|'
-	//	| '|~|' | '|partial-order|'
-	//	| '|,|' | '|parallel|'
-	//	| '|a|' | '|async|'
-	//	| '|partial-order|'
-	//	| '|and|' | '|or|'
-	//	| '|and#then|' | '|or#else|'
-	//	| '|indet|' | '|/\\|'
-	//	| '|fork|' | '|join|';
+	//BlockStatementScheduler
+	//    : '|;|' | '|§|' | '|;;|' | '|.|' | '|/;|'
+	//    | '|i|' | '|interleaving|'
+	//    | '|~|' | '|partial-order|'
+	//    | '|,|' | '|parallel|'
+	//    | '|a|' | '|async|'
+	//    | '|partial-order|'
+	//    | '|and|' | '|or|'
+	//    | '|and#then|' | '|or#else|'
+	//    | '|indet|' | '|/\\|'
+	//    | '|fork|' | '|join|'
+	//    ;
 	public BlockStatementSchedulerElements getBlockStatementSchedulerAccess() {
 		return pBlockStatementScheduler;
 	}
@@ -26784,15 +31833,14 @@
 	//// ++lv --lv
 	//// lv++  lv--
 	///////////////////////////////////////////
-	//ExpressionStatement fmlStmnt::ExpressionStatement:
-	//	expression=AssignmentExpression ';'
-	//	| expression=NewfreshExpression ';'
-	//	| expression=IncrementOrDecrementPrefixExpression ';'
-	//	| expression=IncrementOrDecrementPostfixExpression ';'
-	//	//	| expression=DynamicInstantiationExpression ';'
-	//
-	//	//	| expression=InvokeExpression ';'
-	//;
+	//ExpressionStatement returns fmlStmnt::ExpressionStatement
+	//    : expression=AssignmentExpression ';'
+	//    | expression=NewfreshExpression ';'
+	//    | expression=IncrementOrDecrementPrefixExpression  ';'
+	//    | expression=IncrementOrDecrementPostfixExpression ';'
+	////    | expression=DynamicInstantiationExpression ';'
+	////    | expression=InvokeExpression ';'
+	//    ;
 	public ExpressionStatementElements getExpressionStatementAccess() {
 		return pExpressionStatement;
 	}
@@ -26804,8 +31852,9 @@
 	/////////////////////////////////////////////
 	////// Guard Rules
 	/////////////////////////////////////////////
-	//GuardStatement fmlStmnt::GuardStatement:
-	//	'guard' condition=Expression ';';
+	//GuardStatement returns fmlStmnt::GuardStatement
+	//    : 'guard' condition=Expression ';'
+	//    ;
 	public GuardStatementElements getGuardStatementAccess() {
 		return pGuardStatement;
 	}
@@ -26814,8 +31863,9 @@
 		return getGuardStatementAccess().getRule();
 	}
 	
-	//TimedGuardStatement fmlStmnt::TimedGuardStatement:
-	//	'tguard' condition=Expression ';';
+	//TimedGuardStatement returns fmlStmnt::TimedGuardStatement
+	//    : 'tguard' condition=Expression ';'
+	//    ;
 	public TimedGuardStatementElements getTimedGuardStatementAccess() {
 		return pTimedGuardStatement;
 	}
@@ -26824,8 +31874,9 @@
 		return getTimedGuardStatementAccess().getRule();
 	}
 	
-	//EventGuardStatement fmlStmnt::EventGuardStatement:
-	//	'event' condition=Expression ';';
+	//EventGuardStatement returns fmlStmnt::EventGuardStatement
+	//    : 'event' condition=Expression ';'
+	//    ;
 	public EventGuardStatementElements getEventGuardStatementAccess() {
 		return pEventGuardStatement;
 	}
@@ -26834,8 +31885,9 @@
 		return getEventGuardStatementAccess().getRule();
 	}
 	
-	//CheckSatGuardStatement fmlStmnt::CheckSatGuardStatement:
-	//	'checksat' '<' solver=ESIdentifier '>' condition=Expression ';';
+	//CheckSatGuardStatement returns fmlStmnt::CheckSatGuardStatement
+	//    : 'checksat' '<' solver=ESIdentifier '>' condition=Expression ';'
+	//    ;
 	public CheckSatGuardStatementElements getCheckSatGuardStatementAccess() {
 		return pCheckSatGuardStatement;
 	}
@@ -26848,10 +31900,14 @@
 	////
 	////// Communication Rules
 	/////////////////////////////////////////////
-	//InputComStatement fmlStmnt::InputComStatement:
-	//	'input' port=LitteralComElement ('(' leftValue+=Expression (',' leftValue+=Expression)* ')')? (('<--'
-	//	target=LiteralPureReferenceExpression)?
-	//	& (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+	//InputComStatement returns fmlStmnt::InputComStatement
+	//    : 'input' port=LitteralComElement //ExpressionAsPort
+	//        ( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
+	////        ( ( '<--' target=ValuePureNamedMachineExpression )?
+	//        ( ( '<--' target=LiteralPureReferenceExpression )?
+	//        & ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+	//        ) ';'
+	//    ;
 	public InputComStatementElements getInputComStatementAccess() {
 		return pInputComStatement;
 	}
@@ -26860,10 +31916,14 @@
 		return getInputComStatementAccess().getRule();
 	}
 	
-	//OutputComStatement fmlStmnt::OutputComStatement:
-	//	'output' port=LitteralComElement ('(' rightValue+=Expression (',' rightValue+=Expression)* ')')? (('-->'
-	//	target=LiteralPureReferenceExpression)?
-	//	& (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+	//OutputComStatement returns fmlStmnt::OutputComStatement
+	//    : 'output' port=LitteralComElement //port=ExpressionAsPort
+	//        ( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
+	////        ( ( '-->' target=ValuePureNamedMachineExpression )?
+	//        ( ( '-->' target=LiteralPureReferenceExpression )?
+	//        & ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+	//        ) ';'
+	//    ;
 	public OutputComStatementElements getOutputComStatementAccess() {
 		return pOutputComStatement;
 	}
@@ -26872,8 +31932,12 @@
 		return getOutputComStatementAccess().getRule();
 	}
 	
-	//LitteralComElement fmlExpr::LiteralReferenceElement:
-	//	element=[fmlCommon::NamedElement|ESIdentifier];
+	//LitteralComElement returns fmlExpr::LiteralReferenceElement
+	//    : element=[fmlCommon::NamedElement|ESIdentifier]
+	////    | element=[fmlInfra::Port|ESIdentifier]
+	////    | element=[fmlInfra::Signal|ESIdentifier]
+	////    | element=[fmlInfra::Message|ESIdentifier]
+	//    ;
 	public LitteralComElementElements getLitteralComElementAccess() {
 		return pLitteralComElement;
 	}
@@ -26885,10 +31949,12 @@
 	/////////////////////////////////////////////
 	////// If - Conditional Rules
 	/////////////////////////////////////////////
-	//IfStatement fmlStmnt::IfStatement:
-	//	'if' condition=Expression
-	//	bodyBlock=BlockStatement
-	//	elseifStatement+=ElseIfStatement* ('else' elseBlock=BlockStatement)?;
+	//IfStatement returns fmlStmnt::IfStatement
+	//    : 'if' condition=Expression
+	//        bodyBlock=BlockStatement
+	//        ( elseifStatement+=ElseIfStatement )*
+	//        ( 'else' elseBlock=BlockStatement )?
+	//    ;
 	public IfStatementElements getIfStatementAccess() {
 		return pIfStatement;
 	}
@@ -26897,9 +31963,10 @@
 		return getIfStatementAccess().getRule();
 	}
 	
-	//ElseIfStatement fmlStmnt::ConditionalBlockStatement:
-	//	('elseif' | 'else' 'if') condition=Expression
-	//	bodyBlock=BlockStatement;
+	//ElseIfStatement returns fmlStmnt::ConditionalBlockStatement
+	//    : ( 'elseif' | 'else' 'if' ) condition=Expression
+	//        bodyBlock=BlockStatement
+	//    ;
 	public ElseIfStatementElements getElseIfStatementAccess() {
 		return pElseIfStatement;
 	}
@@ -26911,8 +31978,9 @@
 	///////////////////////////////////////////
 	//// Loop - Iteration Rules
 	///////////////////////////////////////////
-	//WhileDoStatement fmlStmnt::WhileDoStatement:
-	//	'while' condition=Expression bodyBlock=BlockStatement;
+	//WhileDoStatement returns fmlStmnt::WhileDoStatement
+	//    : 'while' condition=Expression  bodyBlock=BlockStatement
+	//    ;
 	public WhileDoStatementElements getWhileDoStatementAccess() {
 		return pWhileDoStatement;
 	}
@@ -26921,8 +31989,9 @@
 		return getWhileDoStatementAccess().getRule();
 	}
 	
-	//DoWhileStatement fmlStmnt::DoWhileStatement:
-	//	'do' bodyBlock=BlockStatement 'while' condition=Expression ';';
+	//DoWhileStatement returns fmlStmnt::DoWhileStatement
+	//    : 'do' bodyBlock=BlockStatement  'while' condition=Expression ';'
+	//    ;
 	public DoWhileStatementElements getDoWhileStatementAccess() {
 		return pDoWhileStatement;
 	}
@@ -26931,13 +32000,14 @@
 		return getDoWhileStatementAccess().getRule();
 	}
 	
-	//ForStatement fmlStmnt::ForStatement:
-	//	'for' init=ForAssignmentExpression? ';'
-	//	condition=Expression ';' iterate=ForAssignmentExpression?
-	//	bodyBlock=BlockStatement
-	//	| 'for' '(' init=ForAssignmentExpression? ';'
-	//	condition=Expression ';' iterate=ForAssignmentExpression? ')'
-	//	bodyBlock=BlockStatement;
+	//ForStatement returns fmlStmnt::ForStatement
+	//    : 'for' ( init=ForAssignmentExpression ) ? ';'
+	//        condition=Expression ';' ( iterate=ForAssignmentExpression )?
+	//        bodyBlock=BlockStatement
+	//    | 'for' '(' ( init=ForAssignmentExpression ) ? ';'
+	//        condition=Expression ';' ( iterate=ForAssignmentExpression )? ')'
+	//        bodyBlock=BlockStatement
+	//    ;
 	public ForStatementElements getForStatementAccess() {
 		return pForStatement;
 	}
@@ -26946,10 +32016,11 @@
 		return getForStatementAccess().getRule();
 	}
 	
-	//ForAssignmentExpression fmlExpr::Expression:
-	//	AssignmentExpression
-	//	| IncrementOrDecrementPrefixExpression
-	//	| IncrementOrDecrementPostfixExpression;
+	//ForAssignmentExpression returns fmlExpr::Expression
+	//    : AssignmentExpression
+	//    | IncrementOrDecrementPrefixExpression
+	//    | IncrementOrDecrementPostfixExpression
+	//    ;
 	public ForAssignmentExpressionElements getForAssignmentExpressionAccess() {
 		return pForAssignmentExpression;
 	}
@@ -26958,11 +32029,12 @@
 		return getForAssignmentExpressionAccess().getRule();
 	}
 	
-	//ForEachStatement fmlStmnt::ForEachStatement:
-	//	'for' iterator=LeftHandSideExpression ':' enumeration=Expression
-	//	bodyBlock=BlockStatement
-	//	| 'for' '(' iterator=LeftHandSideExpression ':' enumeration=Expression ')'
-	//	bodyBlock=BlockStatement;
+	//ForEachStatement returns fmlStmnt::ForEachStatement
+	//    : 'for' iterator=LeftHandSideExpression ':' enumeration=Expression
+	//        bodyBlock=BlockStatement
+	//    | 'for' '(' iterator=LeftHandSideExpression ':' enumeration=Expression ')'
+	//        bodyBlock=BlockStatement
+	//    ;
 	public ForEachStatementElements getForEachStatementAccess() {
 		return pForEachStatement;
 	}
@@ -26974,9 +32046,12 @@
 	///////////////////////////////////////////
 	//// Interrupt Rules
 	///////////////////////////////////////////
-	//InterruptStatement fmlStmnt::InterruptStatement:
-	//	kind=InterruptStatementKind (expr+=Expression
-	//	| '(' expr+=Expression (',' expr+=Expression)* ')')? ';';
+	//InterruptStatement returns fmlStmnt::InterruptStatement
+	//    : kind=InterruptStatementKind
+	//        ( expr+=Expression
+	//        | '(' expr+=Expression ( ',' expr+=Expression )* ')'
+	//        )? ';'
+	//    ;
 	public InterruptStatementElements getInterruptStatementAccess() {
 		return pInterruptStatement;
 	}
@@ -26985,8 +32060,12 @@
 		return getInterruptStatementAccess().getRule();
 	}
 	
-	//enum InterruptStatementKind returns fmlStmnt::InterruptStatementKind:
-	//	break | continue | return | exit;
+	//enum InterruptStatementKind returns fmlStmnt::InterruptStatementKind
+	//    : break    = 'break'
+	//    | continue = 'continue'
+	//    | return   = 'return'
+	//    | exit     = 'exit'
+	//    ;
 	public InterruptStatementKindElements getInterruptStatementKindAccess() {
 		return eInterruptStatementKind;
 	}
@@ -26998,12 +32077,17 @@
 	/////////////////////////////////////////////
 	////// Activity Rules
 	/////////////////////////////////////////////
-	//ActivityStatement fmlStmnt::ActivityStatement:
-	//	{fmlStmnt::ActivityStatement} op=OPERATOR_ACTIVITY (machine=ValuePureNamedMachineExpression
-	//	(tuple=TupleParameterExpression? ';'
-	//	//			| '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
-	//
-	//	| '{' (slot+=SlotProperty ';')* '}') | ';')?;
+	//ActivityStatement returns fmlStmnt::ActivityStatement
+	//    : {fmlStmnt::ActivityStatement}
+	//        op=OPERATOR_ACTIVITY
+	//        ( machine=ValuePureNamedMachineExpression
+	//            ( ( tuple=TupleParameterExpression )? ';'
+	////            | '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')'  ';'
+	//            | '{' ( slot+=SlotProperty ';' )*  '}'
+	//            )
+	//        | ';'
+	//        )?
+	//    ;
 	public ActivityStatementElements getActivityStatementAccess() {
 		return pActivityStatement;
 	}
@@ -27012,9 +32096,26 @@
 		return getActivityStatementAccess().getRule();
 	}
 	
-	//enum OPERATOR_ACTIVITY returns fmlStmnt::ActivityStatementKind:
-	//	init | final | new | destroy | start | stop | restart | suspend | resume | wait | disable | enable | abort | goto |
-	//	schedule | irun | run | rtc;
+	//enum OPERATOR_ACTIVITY returns fmlStmnt::ActivityStatementKind
+	//    : init     = 'init'
+	//    | final    = 'final'
+	//    | new      = 'new'
+	//    | destroy  = 'destroy'
+	//    | start    = 'start'
+	//    | stop     = 'stop'
+	//    | restart  = 'restart'
+	//    | suspend  = 'suspend'
+	//    | resume   = 'resume'
+	//    | wait     = 'wait'
+	//    | disable  = 'disable'
+	//    | enable   = 'enable'
+	//    | abort    = 'abort'
+	//    | goto     = 'goto'
+	//    | schedule = 'schedule'
+	//    | irun = 'irun'
+	//    | run  = 'run'
+	//    | rtc  = 'rtc'
+	//    ;
 	public OPERATOR_ACTIVITYElements getOPERATOR_ACTIVITYAccess() {
 		return eOPERATOR_ACTIVITY;
 	}
@@ -27023,20 +32124,36 @@
 		return getOPERATOR_ACTIVITYAccess().getRule();
 	}
 	
-	//InvokeStatement fmlStmnt::InvokeStatement:
-	//	expression=InvokeExpressionDeprecated ';'
-	//	// Exec Routine
-	//	| invokable=[fmlCommon::NamedElement|ESUfid] execRoutine?='(' args=MixTupleExpressionList? ')' ('-->'
-	//	(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
-	//	| '(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'))? ';'
-	//	// Exec Routine
-	//	| execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid]
-	//	'(' args=MixTupleExpressionList? ')' ('-->' (rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
-	//	| '(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'))? ';'
-	//	// Call Procedure
-	//	| callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid] args=MixTupleExpressionList? ('-->'
-	//	(rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])*
-	//	| '(' rets+=[fmlInfra::Variable] (',' rets+=[fmlInfra::Variable])* ')'))? ';';
+	//InvokeStatement returns fmlStmnt::InvokeStatement
+	//    : expression=InvokeExpressionDeprecated ';'
+	//    // Exec Routine
+	//    |  invokable=[fmlCommon::NamedElement|ESUfid]
+	//        execRoutine?='(' ( args=MixTupleExpressionList )? ')'
+	//        ( '-->'
+	//            ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+	//            | '(' rets+=[fmlInfra::Variable]
+	//                ( ',' rets+=[fmlInfra::Variable] )* ')'
+	//            )
+	//        )? ';'
+	//    // Exec Routine
+	//    | execRoutine?='exec' invokable=[fmlCommon::NamedElement|ESUfid]
+	//        '(' ( args=MixTupleExpressionList )? ')'
+	//        ( '-->'
+	//            ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+	//            | '(' rets+=[fmlInfra::Variable]
+	//                ( ',' rets+=[fmlInfra::Variable] )* ')'
+	//            )
+	//        )? ';'
+	//    // Call Procedure
+	//    | callProcedure?='call' invokable=[fmlCommon::NamedElement|ESUfid]
+	//        ( args=MixTupleExpressionList )?
+	//        ( '-->'
+	//            ( rets+=[fmlInfra::Variable] ( ',' rets+=[fmlInfra::Variable] )*
+	//            | '(' rets+=[fmlInfra::Variable]
+	//                ( ',' rets+=[fmlInfra::Variable] )* ')'
+	//            )
+	//        )? ';'
+	//    ;
 	public InvokeStatementElements getInvokeStatementAccess() {
 		return pInvokeStatement;
 	}
@@ -27048,13 +32165,20 @@
 	/////////////////////////////////////////////
 	////// ObsStatement Rules
 	/////////////////////////////////////////////
-	//ObserverStatement fmlStmnt::ObserverStatement:
-	//	{fmlStmnt::ObserverStatement} ('@observe' | '@obs') ('(' 'ctx:' context=ValuePureNamedMachineExpression ')')?
-	//	'{'
-	//	statement=ObservableStatement
-	//	'}' (('provided:' postCondition=Expression
-	//	| '[' postCondition=Expression ']')
-	//	';')?;
+	//ObserverStatement returns fmlStmnt::ObserverStatement
+	//    : {fmlStmnt::ObserverStatement}
+	//        ( '@observe' | '@obs' )
+	//        ( '('  'ctx:'  context=ValuePureNamedMachineExpression  ')'  )?
+	//          '{'
+	//               statement=ObservableStatement
+	//          '}'
+	//        (
+	//        ( 'provided:' postCondition=Expression
+	//         | '[' postCondition=Expression ']'
+	//         )
+	//        ';'
+	//        )?
+	//    ;
 	public ObserverStatementElements getObserverStatementAccess() {
 		return pObserverStatement;
 	}
@@ -27063,9 +32187,10 @@
 		return getObserverStatementAccess().getRule();
 	}
 	
-	//ObservableStatement fmlStmnt::Statement:
-	//	ObsInputComStatement
-	//	| ObsOutputComStatement;
+	//ObservableStatement returns fmlStmnt::Statement
+	//    : ObsInputComStatement
+	//    | ObsOutputComStatement
+	//    ;
 	public ObservableStatementElements getObservableStatementAccess() {
 		return pObservableStatement;
 	}
@@ -27074,10 +32199,13 @@
 		return getObservableStatementAccess().getRule();
 	}
 	
-	//ObsInputComStatement fmlStmnt::InputComStatement:
-	//	'input' port=ObsComElement ('(' leftValue+=Expression (',' leftValue+=Expression)* ')')? (('<--'
-	//	target=ValuePureNamedMachineExpression)?
-	//	& (('<==' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+	//ObsInputComStatement returns fmlStmnt::InputComStatement
+	//    : 'input' port=ObsComElement
+	//        ( '(' leftValue+=Expression ( ',' leftValue+= Expression )* ')' )?
+	//        ( ( '<--' target=ValuePureNamedMachineExpression )?
+	//        & ( ( '<==' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+	//        ) ';'
+	//    ;
 	public ObsInputComStatementElements getObsInputComStatementAccess() {
 		return pObsInputComStatement;
 	}
@@ -27086,10 +32214,13 @@
 		return getObsInputComStatementAccess().getRule();
 	}
 	
-	//ObsOutputComStatement fmlStmnt::OutputComStatement:
-	//	'output' port=ObsComElement ('(' rightValue+=Expression (',' rightValue+=Expression)* ')')? (('-->'
-	//	target=ValuePureNamedMachineExpression)?
-	//	& (('==>' | 'via') route=[fmlInfra::Channel|ESUfid])?) ';';
+	//ObsOutputComStatement returns fmlStmnt::OutputComStatement
+	//    : 'output' port=ObsComElement
+	//        ( '(' rightValue+=Expression ( ',' rightValue+=Expression )* ')' )?
+	//        ( ( '-->' target=ValuePureNamedMachineExpression )?
+	//        & ( ( '==>' | 'via' ) route=[fmlInfra::Channel|ESUfid]/*ExpressionAsChannel*/ )?
+	//        ) ';'
+	//    ;
 	public ObsOutputComStatementElements getObsOutputComStatementAccess() {
 		return pObsOutputComStatement;
 	}
@@ -27098,13 +32229,14 @@
 		return getObsOutputComStatementAccess().getRule();
 	}
 	
-	//ObsComElement fmlExpr::ValueElementSpecification:
-	//	parent=LiteralPureReferenceExpression
-	//	//	: ( parent=ValuePureNamedInstanceExpression
-	//	//		// ( '.' | '->' ) element
-	//	//		kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
-	//?
-	//	element=[fmlCommon::NamedElement|ESIdentifier];
+	//ObsComElement returns fmlExpr::ValueElementSpecification
+	//    : ( parent=LiteralPureReferenceExpression
+	////    : ( parent=ValuePureNamedInstanceExpression
+	////        // ( '.' | '->' ) element
+	////        kind=( ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+	//      )?
+	//      element=[fmlCommon::NamedElement|ESIdentifier]
+	//    ;
 	public ObsComElementElements getObsComElementAccess() {
 		return pObsComElement;
 	}
@@ -27114,23 +32246,29 @@
 	}
 	
 	////ValuePureNamedInstanceExpression returns fmlExpr::Expression
-	////	: LiteralPureReferenceExpression
+	////    : LiteralPureReferenceExpression
 	////
-	////		// ( '.' | '->' ) element
-	////		( { fmlExpr::ValueElementSpecification.parent=current }
-	//////			kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
-	////			kind=ValueDotFieldExpressionKind
-	////			element=[fmlCommon::NamedElement|ESIdentifier]
-	////		)*
-	////	;
+	////        // ( '.' | '->' ) element
+	////        ( { fmlExpr::ValueElementSpecification.parent=current }
+	//////            kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+	////            kind=ValueDotFieldExpressionKind
+	////            element=[fmlCommon::NamedElement|ESIdentifier]
+	////        )*
+	////    ;
 	/////////////////////////////////////////////
 	////// MetaStatement Rules
 	/////////////////////////////////////////////
-	//MetaStatement fmlStmnt::MetaStatement:
-	//	{fmlStmnt::MetaStatement} op=OPERATOR_META ('{' (operand+=Statement+
-	//	| operand+=Expression+)
-	//	'}'
-	//	| operand+=Expression+ ';');
+	//MetaStatement returns fmlStmnt::MetaStatement
+	//    : {fmlStmnt::MetaStatement}
+	//        op=OPERATOR_META
+	//        ( '{'
+	//            ( ( operand+=Statement  )+
+	//            | ( operand+=Expression )+
+	//            )
+	//            '}'
+	//        | ( operand+=Expression )+  ';'
+	//          )
+	//    ;
 	public MetaStatementElements getMetaStatementAccess() {
 		return pMetaStatement;
 	}
@@ -27139,14 +32277,15 @@
 		return getMetaStatementAccess().getRule();
 	}
 	
-	//enum OPERATOR_META returns fmlStmnt::MetaStatementKind:
-	//	informal='@informal'
-	//	| trace='@trace'
-	//	| debug='@debug'
-	//	| comment='@comment'
-	//	| quote='@quote'
-	//	| eval='@eval'
-	//	| run='@run';
+	//enum OPERATOR_META returns fmlStmnt::MetaStatementKind
+	//    : informal = '@informal'
+	//    | trace    = '@trace'
+	//    | debug    = '@debug'
+	//    | comment  = '@comment'
+	//    | quote    = '@quote'
+	//    | eval     = '@eval'
+	//    | run      = '@run'
+	//    ;
 	public OPERATOR_METAElements getOPERATOR_METAAccess() {
 		return eOPERATOR_META;
 	}
@@ -27158,9 +32297,10 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//Expression fmlExpr::Expression:
-	//	AssignmentExpression
-	//	| ConditionalTestExpression;
+	//Expression returns fmlExpr::Expression
+	//    : AssignmentExpression
+	//    | ConditionalTestExpression
+	//    ;
 	public ExpressionElements getExpressionAccess() {
 		return pExpression;
 	}
@@ -27170,9 +32310,10 @@
 	}
 	
 	//// Assignment Expression
-	//AssignmentExpression fmlExpr::AssignmentExpression:
-	//	leftHandSide=LeftHandSideExpression
-	//	operator=AssignmentOperator rightHandSide=Expression;
+	//AssignmentExpression returns fmlExpr::AssignmentExpression
+	//    : leftHandSide=LeftHandSideExpression
+	//        operator=AssignmentOperator rightHandSide=Expression
+	//    ;
 	public AssignmentExpressionElements getAssignmentExpressionAccess() {
 		return pAssignmentExpression;
 	}
@@ -27181,18 +32322,19 @@
 		return getAssignmentExpressionAccess().getRule();
 	}
 	
-	//AssignmentOperator:
-	//	'=' | ':=' | '::='
-	//	| '+=' | '-='
-	//	| '*=' | '/=' | '%='
-	//	| '&&=' | '||='
-	//	| '&=' | '|=' | '^='
-	//	| '<<=' | '>>=' | '>>>='
-	//	// queue operation: push, assign_top, top, pop
-	//	| '<=<'
-	//	| '^=<'
-	//	| '^=>'
-	//	| '>=>';
+	//AssignmentOperator
+	//    : '='   | ':='  | '::='
+	//    | '+='  | '-='
+	//    | '*='  | '/='  | '%='
+	//    | '&&=' | '||='
+	//    | '&='  | '|='    | '^='
+	//    | '<<=' | '>>=' | '>>>='
+	//// queue operation: push, assign_top, top, pop
+	//    | '<=<'
+	//    | '^=<'
+	//    | '^=>'
+	//    | '>=>'
+	//    ;
 	public AssignmentOperatorElements getAssignmentOperatorAccess() {
 		return pAssignmentOperator;
 	}
@@ -27201,9 +32343,13 @@
 		return getAssignmentOperatorAccess().getRule();
 	}
 	
-	//LeftHandSideExpression fmlExpr::LeftHandSideExpression:
-	//	{fmlExpr::LeftHandSideExpression} (lvalue=ValueSelectionExpression
-	//	| '(' lvalue=ValueSelectionExpression ')');
+	//LeftHandSideExpression returns fmlExpr::LeftHandSideExpression
+	//    : { fmlExpr::LeftHandSideExpression }
+	////        lvalue=PrimaryExpression
+	//        ( lvalue=ValueSelectionExpression
+	//        | '(' lvalue=ValueSelectionExpression ')'
+	//        )
+	//    ;
 	public LeftHandSideExpressionElements getLeftHandSideExpressionAccess() {
 		return pLeftHandSideExpression;
 	}
@@ -27213,10 +32359,13 @@
 	}
 	
 	//// Conditional Test Expression
-	//ConditionalTestExpression fmlExpr::Expression:
-	//	LogicalOrExpression ({fmlExpr::ConditionalTestExpression.condition=current} operator='?' thenOperand=Expression
-	//	elseSeparator=':'
-	//	elseOperand=Expression)?;
+	//ConditionalTestExpression returns fmlExpr::Expression
+	//    : LogicalOrExpression
+	//        ( {fmlExpr::ConditionalTestExpression.condition=current}
+	//            operator='?' thenOperand=Expression elseSeparator=':'
+	//            elseOperand=Expression
+	//        )?
+	//    ;
 	public ConditionalTestExpressionElements getConditionalTestExpressionAccess() {
 		return pConditionalTestExpression;
 	}
@@ -27226,9 +32375,13 @@
 	}
 	
 	//// Logical Expression
-	//LogicalOrExpression fmlExpr::Expression:
-	//	LogicalAndExpression ({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('||' | 'or')
-	//	operand+=LogicalAndExpression (('||' | 'or') operand+=LogicalAndExpression)*)?;
+	//LogicalOrExpression returns fmlExpr::Expression
+	//    : LogicalAndExpression
+	//        ( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+	//            operator=( '||' | 'or' ) operand+=LogicalAndExpression
+	//            ( ( '||' | 'or' ) operand+=LogicalAndExpression )*
+	//        )?
+	//    ;
 	public LogicalOrExpressionElements getLogicalOrExpressionAccess() {
 		return pLogicalOrExpression;
 	}
@@ -27237,9 +32390,13 @@
 		return getLogicalOrExpressionAccess().getRule();
 	}
 	
-	//LogicalAndExpression fmlExpr::Expression:
-	//	BitwiseOrExpression ({fmlExpr::LogicalAssociativeExpression.operand+=current} operator=('&&' | 'and')
-	//	operand+=BitwiseOrExpression (('&&' | 'and') operand+=BitwiseOrExpression)*)?;
+	//LogicalAndExpression returns fmlExpr::Expression
+	//    : BitwiseOrExpression
+	//        ( {fmlExpr::LogicalAssociativeExpression.operand+=current}
+	//            operator=( '&&' | 'and' ) operand+=BitwiseOrExpression
+	//            ( ( '&&' | 'and' ) operand+=BitwiseOrExpression )*
+	//        )?
+	//    ;
 	public LogicalAndExpressionElements getLogicalAndExpressionAccess() {
 		return pLogicalAndExpression;
 	}
@@ -27249,9 +32406,13 @@
 	}
 	
 	//// Bitwise Expression
-	//BitwiseOrExpression fmlExpr::Expression:
-	//	BitwiseXorExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='|'
-	//	operand+=BitwiseXorExpression ('|' operand+=BitwiseXorExpression)*)?;
+	//BitwiseOrExpression returns fmlExpr::Expression
+	//    : BitwiseXorExpression
+	//        ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+	//            operator='|' operand+=BitwiseXorExpression
+	//            ( '|' operand+=BitwiseXorExpression )*
+	//        )?
+	//    ;
 	public BitwiseOrExpressionElements getBitwiseOrExpressionAccess() {
 		return pBitwiseOrExpression;
 	}
@@ -27260,9 +32421,13 @@
 		return getBitwiseOrExpressionAccess().getRule();
 	}
 	
-	//BitwiseXorExpression fmlExpr::Expression:
-	//	BitwiseAndExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='^'
-	//	operand+=BitwiseAndExpression ('^' operand+=BitwiseAndExpression)*)?;
+	//BitwiseXorExpression returns fmlExpr::Expression
+	//    : BitwiseAndExpression
+	//        ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+	//            operator='^' operand+=BitwiseAndExpression
+	//            ( '^' operand+=BitwiseAndExpression )*
+	//        )?
+	//    ;
 	public BitwiseXorExpressionElements getBitwiseXorExpressionAccess() {
 		return pBitwiseXorExpression;
 	}
@@ -27271,9 +32436,13 @@
 		return getBitwiseXorExpressionAccess().getRule();
 	}
 	
-	//BitwiseAndExpression fmlExpr::Expression:
-	//	EqualityExpression ({fmlExpr::BitwiseAssociativeExpression.operand+=current} operator='&' operand+=EqualityExpression
-	//	('&' operand+=EqualityExpression)*)?;
+	//BitwiseAndExpression returns fmlExpr::Expression
+	//    : EqualityExpression
+	//        ( {fmlExpr::BitwiseAssociativeExpression.operand+=current}
+	//            operator='&' operand+=EqualityExpression
+	//            ( '&' operand+=EqualityExpression )*
+	//        )?
+	//    ;
 	public BitwiseAndExpressionElements getBitwiseAndExpressionAccess() {
 		return pBitwiseAndExpression;
 	}
@@ -27283,9 +32452,12 @@
 	}
 	
 	//// Equality Expression
-	//EqualityExpression fmlExpr::Expression:
-	//	RelationalExpression ({fmlExpr::EqualityBinaryExpression.leftOperand=current} operator=EqualityOperator
-	//	rightOperand=RelationalExpression)?;
+	//EqualityExpression returns fmlExpr::Expression
+	//    : RelationalExpression
+	//        ( {fmlExpr::EqualityBinaryExpression.leftOperand=current}
+	//            operator=EqualityOperator rightOperand=RelationalExpression
+	//        )?
+	//    ;
 	public EqualityExpressionElements getEqualityExpressionAccess() {
 		return pEqualityExpression;
 	}
@@ -27294,8 +32466,9 @@
 		return getEqualityExpressionAccess().getRule();
 	}
 	
-	//EqualityOperator:
-	//	'==' | '!=' | '===' | '!==' | '=!=' | '=/=';
+	//EqualityOperator
+	//    : '==' | '!=' | '===' | '!==' | '=!=' | '=/='
+	//    ;
 	public EqualityOperatorElements getEqualityOperatorAccess() {
 		return pEqualityOperator;
 	}
@@ -27305,10 +32478,15 @@
 	}
 	
 	//// Relational Binary Expression
-	//RelationalExpression fmlExpr::Expression:
-	//	AdditiveExpression ({fmlExpr::RelationalBinaryExpression.leftOperand=current} operator=RelationalOperator
-	//	rightOperand=AdditiveExpression ({fmlExpr::RelationalTernaryExpression.leftRelation=current}
-	//	rightOperator=RelationalOperator rightOperand=AdditiveExpression)?)?;
+	//RelationalExpression returns fmlExpr::Expression
+	//    : AdditiveExpression
+	//        ( {fmlExpr::RelationalBinaryExpression.leftOperand=current}
+	//            operator=RelationalOperator rightOperand=AdditiveExpression
+	//            ( {fmlExpr::RelationalTernaryExpression.leftRelation=current}
+	//                rightOperator=RelationalOperator rightOperand=AdditiveExpression
+	//            )?
+	//        )?
+	//    ;
 	public RelationalExpressionElements getRelationalExpressionAccess() {
 		return pRelationalExpression;
 	}
@@ -27317,8 +32495,9 @@
 		return getRelationalExpressionAccess().getRule();
 	}
 	
-	//RelationalOperator:
-	//	'<' | '>' | '<=' | '>=' | 'in';
+	//RelationalOperator
+	//    : '<' | '>' | '<=' | '>=' | 'in'
+	//    ;
 	public RelationalOperatorElements getRelationalOperatorAccess() {
 		return pRelationalOperator;
 	}
@@ -27328,11 +32507,16 @@
 	}
 	
 	//// Arithmetic Associative (left) Expression
-	//AdditiveExpression fmlExpr::Expression:
-	//	MultiplicativeExpression ({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='+'
-	//	operand+=MultiplicativeExpression ('+' operand+=MultiplicativeExpression)* |
-	//	{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='-' operand+=MultiplicativeExpression ('-'
-	//	operand+=MultiplicativeExpression)*)*;
+	//AdditiveExpression returns fmlExpr::Expression
+	//    : MultiplicativeExpression
+	//        ( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+	//            operator='+' operand+=MultiplicativeExpression
+	//            ( '+' operand+=MultiplicativeExpression )* )
+	//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+	//            operator='-' operand+=MultiplicativeExpression
+	//            ( '-' operand+=MultiplicativeExpression )* )
+	//        )*
+	//    ;
 	public AdditiveExpressionElements getAdditiveExpressionAccess() {
 		return pAdditiveExpression;
 	}
@@ -27341,13 +32525,22 @@
 		return getAdditiveExpressionAccess().getRule();
 	}
 	
-	//MultiplicativeExpression fmlExpr::Expression:
-	//	UnaryExpression ({fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='*' operand+=UnaryExpression
-	//	('*' operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='**'
-	//	operand+=UnaryExpression ('**' operand+=UnaryExpression)* |
-	//	{fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='/' operand+=UnaryExpression ('/'
-	//	operand+=UnaryExpression)* | {fmlExpr::ArithmeticAssociativeExpression.operand+=current} operator='%'
-	//	operand+=UnaryExpression ('%' operand+=UnaryExpression)*)*;
+	//MultiplicativeExpression returns fmlExpr::Expression
+	//    : UnaryExpression
+	//        ( ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+	//            operator='*' operand+=UnaryExpression
+	//            ( '*' operand+=UnaryExpression )* )
+	//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+	//            operator='**' operand+=UnaryExpression
+	//            ( '**' operand+=UnaryExpression )* )
+	//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+	//            operator='/' operand+=UnaryExpression
+	//            ( '/' operand+=UnaryExpression )* )
+	//        | ( {fmlExpr::ArithmeticAssociativeExpression.operand+=current}
+	//            operator='%' operand+=UnaryExpression
+	//            ( '%' operand+=UnaryExpression )* )
+	//        )*
+	//    ;
 	public MultiplicativeExpressionElements getMultiplicativeExpressionAccess() {
 		return pMultiplicativeExpression;
 	}
@@ -27357,19 +32550,19 @@
 	}
 	
 	//// Unary Expression
-	//UnaryExpression fmlExpr::Expression:
-	//	LiteralTerminalExpression
-	//	| ArithmeticUnaryExpression
-	//	| LogicalUnaryExpression
-	//	| QuantifiedLogicalExpression
-	//	| BitwiseUnaryExpression
-	//	| NewfreshExpression
-	//	| CastExpression
-	//	//	| CollectionFunctionExpression
-	//
-	//	| PrefixUnaryExpression
-	//	| PostfixUnaryExpression
-	//	| PrimaryExpression;
+	//UnaryExpression returns fmlExpr::Expression
+	//    : LiteralTerminalExpression
+	//    | ArithmeticUnaryExpression
+	//    | LogicalUnaryExpression
+	//    | QuantifiedLogicalExpression
+	//    | BitwiseUnaryExpression
+	//    | NewfreshExpression
+	//    | CastExpression
+	////    | CollectionFunctionExpression
+	//    | PrefixUnaryExpression
+	//    | PostfixUnaryExpression
+	//    | PrimaryExpression
+	//    ;
 	public UnaryExpressionElements getUnaryExpressionAccess() {
 		return pUnaryExpression;
 	}
@@ -27379,8 +32572,9 @@
 	}
 	
 	//// Postfix Increment or Decrement Expression
-	//PostfixUnaryExpression fmlExpr::Expression:
-	//	IncrementOrDecrementPostfixExpression;
+	//PostfixUnaryExpression returns fmlExpr::Expression
+	//    : IncrementOrDecrementPostfixExpression
+	//    ;
 	public PostfixUnaryExpressionElements getPostfixUnaryExpressionAccess() {
 		return pPostfixUnaryExpression;
 	}
@@ -27389,8 +32583,9 @@
 		return getPostfixUnaryExpressionAccess().getRule();
 	}
 	
-	//IncrementOrDecrementPostfixExpression fmlExpr::IncrementOrDecrementPostfixExpression:
-	//	leftHandSide=LeftHandSideExpression operator=(AffixOperator | '>=>');
+	//IncrementOrDecrementPostfixExpression returns fmlExpr::IncrementOrDecrementPostfixExpression
+	//    : leftHandSide=LeftHandSideExpression operator=(AffixOperator  | '>=>')
+	//    ;
 	public IncrementOrDecrementPostfixExpressionElements getIncrementOrDecrementPostfixExpressionAccess() {
 		return pIncrementOrDecrementPostfixExpression;
 	}
@@ -27400,8 +32595,9 @@
 	}
 	
 	//// Prefix Increment or Decrement Expression
-	//PrefixUnaryExpression fmlExpr::Expression:
-	//	IncrementOrDecrementPrefixExpression;
+	//PrefixUnaryExpression returns fmlExpr::Expression
+	//    : IncrementOrDecrementPrefixExpression
+	//    ;
 	public PrefixUnaryExpressionElements getPrefixUnaryExpressionAccess() {
 		return pPrefixUnaryExpression;
 	}
@@ -27410,8 +32606,9 @@
 		return getPrefixUnaryExpressionAccess().getRule();
 	}
 	
-	//IncrementOrDecrementPrefixExpression fmlExpr::IncrementOrDecrementPrefixExpression:
-	//	operator=AffixOperator leftHandSide=LeftHandSideExpression;
+	//IncrementOrDecrementPrefixExpression returns fmlExpr::IncrementOrDecrementPrefixExpression
+	//    : operator=AffixOperator leftHandSide=LeftHandSideExpression
+	//    ;
 	public IncrementOrDecrementPrefixExpressionElements getIncrementOrDecrementPrefixExpressionAccess() {
 		return pIncrementOrDecrementPrefixExpression;
 	}
@@ -27420,8 +32617,9 @@
 		return getIncrementOrDecrementPrefixExpressionAccess().getRule();
 	}
 	
-	//AffixOperator:
-	//	'++' | '--';
+	//AffixOperator
+	//    : '++' | '--'
+	//    ;
 	public AffixOperatorElements getAffixOperatorAccess() {
 		return pAffixOperator;
 	}
@@ -27431,9 +32629,10 @@
 	}
 	
 	//// Newfresh Unary Expression
-	//NewfreshExpression fmlExpr::NewfreshExpression:
-	//	'newfresh' leftHandSide=LeftHandSideExpression
-	//	| '(:' leftHandSide=LeftHandSideExpression 'newfresh' ')';
+	//NewfreshExpression returns fmlExpr::NewfreshExpression
+	//    : 'newfresh' leftHandSide=LeftHandSideExpression
+	//    | '(:' leftHandSide=LeftHandSideExpression 'newfresh' ')'
+	//    ;
 	public NewfreshExpressionElements getNewfreshExpressionAccess() {
 		return pNewfreshExpression;
 	}
@@ -27443,9 +32642,10 @@
 	}
 	
 	//// Cast Expression
-	//CastExpression fmlExpr::CastExpression:
-	//	'ctor' '<' datatype=[fmlType::DataType|ESUfid] '>'
-	//	'(' operand=Expression ')';
+	//CastExpression returns fmlExpr::CastExpression
+	//    : 'ctor' '<' datatype=[fmlType::DataType|ESUfid] '>'
+	//         '(' operand=Expression ')'
+	//    ;
 	public CastExpressionElements getCastExpressionAccess() {
 		return pCastExpression;
 	}
@@ -27455,10 +32655,11 @@
 	}
 	
 	////CollectionFunctionExpression  fmlExpr::MixTupleExpression
-	//CollectionFunctionExpression fmlExpr::Expression:
-	//	'empty(' Expression ')'
-	//	| 'nonempty(' Expression ')'
-	//	| 'size(' Expression ')';
+	//CollectionFunctionExpression returns fmlExpr::Expression
+	//    : 'empty('    Expression ')'
+	//    | 'nonempty(' Expression ')'
+	//    | 'size('     Expression ')'
+	//    ;
 	public CollectionFunctionExpressionElements getCollectionFunctionExpressionAccess() {
 		return pCollectionFunctionExpression;
 	}
@@ -27468,8 +32669,9 @@
 	}
 	
 	//// Arithmetic Unary Expression
-	//ArithmeticUnaryExpression fmlExpr::ArithmeticUnaryExpression:
-	//	operator=ArithmeticUnaryOperator operand=UnaryExpression;
+	//ArithmeticUnaryExpression returns fmlExpr::ArithmeticUnaryExpression
+	//    : operator=ArithmeticUnaryOperator operand=UnaryExpression
+	//;
 	public ArithmeticUnaryExpressionElements getArithmeticUnaryExpressionAccess() {
 		return pArithmeticUnaryExpression;
 	}
@@ -27478,8 +32680,9 @@
 		return getArithmeticUnaryExpressionAccess().getRule();
 	}
 	
-	//ArithmeticUnaryOperator:
-	//	'+' | '-';
+	//ArithmeticUnaryOperator
+	//    : '+' | '-'
+	//    ;
 	public ArithmeticUnaryOperatorElements getArithmeticUnaryOperatorAccess() {
 		return pArithmeticUnaryOperator;
 	}
@@ -27489,10 +32692,11 @@
 	}
 	
 	//// Logical Quantified Expression
-	//QuantifiedLogicalExpression fmlExpr::QuantifiedLogicalExpression:
-	//	quantifier=('forall' | 'exists')
-	//	'<' variable+=BoundVariable (',' variable+=BoundVariable)* '>'
-	//	'(' predicate=Expression ')';
+	//QuantifiedLogicalExpression returns fmlExpr::QuantifiedLogicalExpression
+	//    : quantifier=( 'forall' | 'exists' )
+	//      '<'  variable+=BoundVariable  ( ',' variable+=BoundVariable )*  '>'
+	//      '('  predicate=Expression  ')'
+	//    ;
 	public QuantifiedLogicalExpressionElements getQuantifiedLogicalExpressionAccess() {
 		return pQuantifiedLogicalExpression;
 	}
@@ -27501,8 +32705,9 @@
 		return getQuantifiedLogicalExpressionAccess().getRule();
 	}
 	
-	//BoundVariable fmlInfra::Variable:
-	//	name=ESIdentifier ':' type=DataType;
+	//BoundVariable returns fmlInfra::Variable
+	//    : name=ESIdentifier  ':'  type=DataType
+	//    ;
 	public BoundVariableElements getBoundVariableAccess() {
 		return pBoundVariable;
 	}
@@ -27512,8 +32717,9 @@
 	}
 	
 	//// Logical Unary Expression
-	//LogicalUnaryExpression fmlExpr::LogicalUnaryExpression:
-	//	operator=('!' | 'not') operand=UnaryExpression;
+	//LogicalUnaryExpression returns fmlExpr::LogicalUnaryExpression
+	//    : operator=('!' | 'not') operand=UnaryExpression
+	//    ;
 	public LogicalUnaryExpressionElements getLogicalUnaryExpressionAccess() {
 		return pLogicalUnaryExpression;
 	}
@@ -27523,8 +32729,9 @@
 	}
 	
 	//// Logical Unary Expression
-	//BitwiseUnaryExpression fmlExpr::BitwiseUnaryExpression:
-	//	operator='~' operand=UnaryExpression;
+	//BitwiseUnaryExpression returns fmlExpr::BitwiseUnaryExpression
+	//    :operator='~' operand=UnaryExpression
+	//    ;
 	public BitwiseUnaryExpressionElements getBitwiseUnaryExpressionAccess() {
 		return pBitwiseUnaryExpression;
 	}
@@ -27533,26 +32740,45 @@
 		return getBitwiseUnaryExpressionAccess().getRule();
 	}
 	
-	//PrimaryExpression fmlExpr::Expression:
-	//	BaseExpression ({fmlExpr::ValueElementSpecification.parent=current}
-	//	'.' //kind=ValueDotFieldExpressionKind
-	//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-	//	arg=PositionalTupleExpressionList ']'
-	//	// '(' parameter ',' ... ',' parameter ')'
-	//	| kind=ValueParameterExpressionKind
-	//	arg=MixTupleExpressionList ')')?)* ({fmlExpr::ValueElementSpecification.parent=current}
-	//	'->' //kind=ValueArrowFieldExpressionKind
-	//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-	//	arg=PositionalTupleExpressionList ']'
-	//	// '(' parameter ',' ... ',' parameter ')'
-	//	| kind=ValueParameterExpressionKind
-	//	arg=MixTupleExpressionList ')')? ({fmlExpr::ValueElementSpecification.parent=current}
-	//	'.' //kind=ValueDotFieldExpressionKind
-	//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-	//	arg=PositionalTupleExpressionList ']'
-	//	// '(' parameter ',' ... ',' parameter ')'
-	//	| kind=ValueParameterExpressionKind
-	//	arg=MixTupleExpressionList ')')?)*)?;
+	//PrimaryExpression returns fmlExpr::Expression
+	//    : BaseExpression
+	//        // '.' element
+	//        ( { fmlExpr::ValueElementSpecification.parent=current }
+	//            '.' //kind=ValueDotFieldExpressionKind
+	//            element=[fmlCommon::NamedElement|ESIdentifier]
+	//            // '[' index ',' ... ',' index ']'
+	//            ( kind=ValueIndexExpressionKind
+	//                arg=PositionalTupleExpressionList  ']'
+	//            // '(' parameter ',' ... ',' parameter ')'
+	//            | kind=ValueParameterExpressionKind
+	//                arg=MixTupleExpressionList  ')'
+	//            )?
+	//        )*
+	//        // '->' element
+	//        ( { fmlExpr::ValueElementSpecification.parent=current }
+	//            '->' //kind=ValueArrowFieldExpressionKind
+	//            element=[fmlCommon::NamedElement|ESIdentifier]
+	//            // '[' index ',' ... ',' index ']'
+	//            ( kind=ValueIndexExpressionKind
+	//                arg=PositionalTupleExpressionList  ']'
+	//            // '(' parameter ',' ... ',' parameter ')'
+	//            | kind=ValueParameterExpressionKind
+	//                arg=MixTupleExpressionList  ')'
+	//            )?
+	//            // '.' element
+	//            ( { fmlExpr::ValueElementSpecification.parent=current }
+	//                 '.' //kind=ValueDotFieldExpressionKind
+	//                element=[fmlCommon::NamedElement|ESIdentifier]
+	//                // '[' index ',' ... ',' index ']'
+	//                ( kind=ValueIndexExpressionKind
+	//                    arg=PositionalTupleExpressionList  ']'
+	//                // '(' parameter ',' ... ',' parameter ')'
+	//                | kind=ValueParameterExpressionKind
+	//                    arg=MixTupleExpressionList  ')'
+	//                )?
+	//            )*
+	//        )?
+	//    ;
 	public PrimaryExpressionElements getPrimaryExpressionAccess() {
 		return pPrimaryExpression;
 	}
@@ -27561,13 +32787,13 @@
 		return getPrimaryExpressionAccess().getRule();
 	}
 	
-	//BaseExpression fmlExpr::Expression:
-	//	LiteralReferenceableExpression
-	//	| '(' Expression ')'
-	//	| InvokeExpressionDeprecated
-	//	| DynamicInstantiationExpression
-	//	//	| NamedExpression
-	//;
+	//BaseExpression returns fmlExpr::Expression
+	//    : LiteralReferenceableExpression
+	//    | '(' Expression ')'
+	//    | InvokeExpressionDeprecated
+	//    | DynamicInstantiationExpression
+	////    | NamedExpression
+	//    ;
 	public BaseExpressionElements getBaseExpressionAccess() {
 		return pBaseExpression;
 	}
@@ -27577,8 +32803,10 @@
 	}
 	
 	//// Behavior Invoke Expression
-	//InvokeExpression fmlExpr::InvokeExpression:
-	//	{fmlExpr::InvokeExpression} invokable=ValueSelectionExpression;
+	//InvokeExpression returns fmlExpr::InvokeExpression
+	//    : {fmlExpr::InvokeExpression}
+	//        invokable=ValueSelectionExpression
+	//    ;
 	public InvokeExpressionElements getInvokeExpressionAccess() {
 		return pInvokeExpression;
 	}
@@ -27587,9 +32815,10 @@
 		return getInvokeExpressionAccess().getRule();
 	}
 	
-	//InvokeExpressionDeprecated fmlExpr::InvokeExpression:
-	//	{fmlExpr::InvokeExpression}
-	//	'(:' args+=Expression invokable=LiteralReferenceElement args+=Expression* ')';
+	//InvokeExpressionDeprecated returns fmlExpr::InvokeExpression
+	//    : {fmlExpr::InvokeExpression}
+	//        '(:' args+=Expression invokable=LiteralReferenceElement ( args+=Expression )* ')'
+	//    ;
 	public InvokeExpressionDeprecatedElements getInvokeExpressionDeprecatedAccess() {
 		return pInvokeExpressionDeprecated;
 	}
@@ -27598,9 +32827,10 @@
 		return getInvokeExpressionDeprecatedAccess().getRule();
 	}
 	
-	//DynamicInstantiationExpression fmlExpr::InstantiationExpression:
-	//	{fmlExpr::InstantiationExpression}
-	//	'new' instance=InstanceSpecification;
+	//DynamicInstantiationExpression returns fmlExpr::InstantiationExpression
+	//    : {fmlExpr::InstantiationExpression}
+	//        'new' instance=InstanceSpecification
+	//    ;
 	public DynamicInstantiationExpressionElements getDynamicInstantiationExpressionAccess() {
 		return pDynamicInstantiationExpression;
 	}
@@ -27609,9 +32839,13 @@
 		return getDynamicInstantiationExpressionAccess().getRule();
 	}
 	
-	//InstanceSpecification fmlInfra::InstanceMachine:
-	//	{fmlInfra::InstanceMachine} model=[fmlInfra::Machine|ESIdentifier] ('(' (slot+=SlotParameter (','
-	//	slot+=SlotParameter)*)? ')')? ('{' (slot+=SlotProperty ';')* '}')?;
+	//InstanceSpecification returns fmlInfra::InstanceMachine
+	//    : {fmlInfra::InstanceMachine}
+	//        model=[fmlInfra::Machine|ESIdentifier]
+	////        ( '(' arg=MixTupleExpressionList ')'
+	//        ( '(' ( slot+=SlotParameter ( ',' slot+=SlotParameter )* )? ')' )?
+	//        ( '{' ( slot+=SlotProperty ';' )*  '}' )?
+	//    ;
 	public InstanceSpecificationElements getInstanceSpecificationAccess() {
 		return pInstanceSpecification;
 	}
@@ -27621,8 +32855,9 @@
 	}
 	
 	//// Tuple Expression
-	//TupleParameterExpression fmlExpr::TupleExpression:
-	//	'(' MixTupleExpressionList ')';
+	//TupleParameterExpression returns fmlExpr::TupleExpression
+	//    : '('  MixTupleExpressionList  ')'
+	//    ;
 	public TupleParameterExpressionElements getTupleParameterExpressionAccess() {
 		return pTupleParameterExpression;
 	}
@@ -27631,8 +32866,11 @@
 		return getTupleParameterExpressionAccess().getRule();
 	}
 	
-	//MixTupleExpressionList fmlExpr::MixTupleExpression:
-	//	{fmlExpr::MixTupleExpression} value+=(Expression | NamedExpression) (',' value+=(Expression | NamedExpression))*;
+	//MixTupleExpressionList returns fmlExpr::MixTupleExpression
+	//    : {fmlExpr::MixTupleExpression}
+	//        value+=( Expression | NamedExpression )
+	//        ( ',' value+=( Expression | NamedExpression ) )*
+	//    ;
 	public MixTupleExpressionListElements getMixTupleExpressionListAccess() {
 		return pMixTupleExpressionList;
 	}
@@ -27643,29 +32881,30 @@
 	
 	////// At least one NamedExpression
 	////FormalMixTupleExpressionList returns fmlExpr::MixTupleExpression
-	////	: {fmlExpr::MixTupleExpression}
-	////		( value+=Expression  ( ',' value+=Expression )*
-	////			( ',' value+=NamedExpression )
-	////		| value+=NamedExpression
-	////		)
-	////		( ',' value+=( Expression | NamedExpression ) )*
-	////	;
+	////    : {fmlExpr::MixTupleExpression}
+	////        ( value+=Expression  ( ',' value+=Expression )*
+	////            ( ',' value+=NamedExpression )
+	////        | value+=NamedExpression
+	////        )
+	////        ( ',' value+=( Expression | NamedExpression ) )*
+	////    ;
 	////
 	////// NamedExpression only at the end
 	////EndingMixTupleExpressionList returns fmlExpr::MixTupleExpression
-	////	: {fmlExpr::MixTupleExpression}
-	////		( value+=Expression  ( ',' value+=Expression )*
-	////		| value+=NamedExpression
-	////		)
-	////		( ',' value+=NamedExpression )*
-	////	;
+	////    : {fmlExpr::MixTupleExpression}
+	////        ( value+=Expression  ( ',' value+=Expression )*
+	////        | value+=NamedExpression
+	////        )
+	////        ( ',' value+=NamedExpression )*
+	////    ;
 	////
 	////
 	////NamedTupleExpressionList returns fmlExpr::NamedTupleExpression
-	////	: value+=NamedExpression ( ',' value+=NamedExpression )*
-	////	;
-	//PositionalTupleExpressionList fmlExpr::PositionalTupleExpression:
-	//	value+=Expression (',' value+=Expression)*;
+	////    : value+=NamedExpression ( ',' value+=NamedExpression )*
+	////    ;
+	//PositionalTupleExpressionList returns fmlExpr::PositionalTupleExpression
+	//    : value+=Expression ( ',' value+=Expression )*
+	//    ;
 	public PositionalTupleExpressionListElements getPositionalTupleExpressionListAccess() {
 		return pPositionalTupleExpressionList;
 	}
@@ -27674,8 +32913,11 @@
 		return getPositionalTupleExpressionListAccess().getRule();
 	}
 	
-	//NamedExpression fmlExpr::NamedExpression:
-	//	name=XLIA_ID (':' | '=>' | '<-') expression=Expression;
+	//NamedExpression returns fmlExpr::NamedExpression
+	//    : //target=[fmlCommon::NamedElement|ESIdentifier]
+	//        name=XLIA_ID
+	//        ( ':' | '=>' | '<-' ) expression=Expression
+	//    ;
 	public NamedExpressionElements getNamedExpressionAccess() {
 		return pNamedExpression;
 	}
@@ -27685,15 +32927,16 @@
 	}
 	
 	////NotificationComExpression returns fmlExpr::Expression
-	////	: { fmlExpr::Expression }
-	////		symbol=( 'present' | 'absent' )  operand+=Expression
-	////	;
+	////    : { fmlExpr::Expression }
+	////        symbol=( 'present' | 'absent' )  operand+=Expression
+	////    ;
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralExpression fmlExpr::LiteralExpression:
-	//	LiteralTerminalExpression
-	//	| LiteralReferenceableExpression;
+	//LiteralExpression returns fmlExpr::LiteralExpression
+	//    : LiteralTerminalExpression
+	//    | LiteralReferenceableExpression
+	//    ;
 	public LiteralExpressionElements getLiteralExpressionAccess() {
 		return pLiteralExpression;
 	}
@@ -27702,9 +32945,10 @@
 		return getLiteralExpressionAccess().getRule();
 	}
 	
-	//LiteralReferenceableExpression fmlExpr::LiteralExpression:
-	//	LiteralCollectionExpression
-	//	| LiteralReferenceExpression;
+	//LiteralReferenceableExpression returns fmlExpr::LiteralExpression
+	//    : LiteralCollectionExpression
+	//    | LiteralReferenceExpression
+	//    ;
 	public LiteralReferenceableExpressionElements getLiteralReferenceableExpressionAccess() {
 		return pLiteralReferenceableExpression;
 	}
@@ -27713,18 +32957,19 @@
 		return getLiteralReferenceableExpressionAccess().getRule();
 	}
 	
-	//LiteralTerminalExpression fmlExpr::LiteralExpression:
-	//	LiteralBooleanExpression
-	//	| LiteralIntegerExpression
-	//	| LiteralRationalExpression
-	//	| LiteralFloatExpression
-	//	| LiteralCharacterExpression
-	//	| LiteralStringExpression
-	//	| LiteralNullExpression
-	//	| LiteralAnyValueExpression
-	//	| LiteralOptionalValueExpression
-	//	| LiteralNoneValueExpression
-	//	| LiteralAnyOrNoneValueExpression;
+	//LiteralTerminalExpression returns fmlExpr::LiteralExpression
+	//    : LiteralBooleanExpression
+	//    | LiteralIntegerExpression
+	//    | LiteralRationalExpression
+	//    | LiteralFloatExpression
+	//    | LiteralCharacterExpression
+	//    | LiteralStringExpression
+	//    | LiteralNullExpression
+	//    | LiteralAnyValueExpression
+	//    | LiteralOptionalValueExpression
+	//    | LiteralNoneValueExpression
+	//    | LiteralAnyOrNoneValueExpression
+	//    ;
 	public LiteralTerminalExpressionElements getLiteralTerminalExpressionAccess() {
 		return pLiteralTerminalExpression;
 	}
@@ -27736,8 +32981,10 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Boolean / Numeric Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralBooleanExpression fmlExpr::LiteralBooleanExpression:
-	//	{fmlExpr::LiteralBooleanExpression} value=EBoolean;
+	//LiteralBooleanExpression returns fmlExpr::LiteralBooleanExpression
+	//    : {fmlExpr::LiteralBooleanExpression}
+	//        value=EBoolean
+	//    ;
 	public LiteralBooleanExpressionElements getLiteralBooleanExpressionAccess() {
 		return pLiteralBooleanExpression;
 	}
@@ -27746,8 +32993,10 @@
 		return getLiteralBooleanExpressionAccess().getRule();
 	}
 	
-	//LiteralIntegerExpression fmlExpr::LiteralIntegerExpression:
-	//	{fmlExpr::LiteralIntegerExpression} value=EInteger;
+	//LiteralIntegerExpression returns fmlExpr::LiteralIntegerExpression
+	//    : {fmlExpr::LiteralIntegerExpression}
+	//        value=EInteger
+	//    ;
 	public LiteralIntegerExpressionElements getLiteralIntegerExpressionAccess() {
 		return pLiteralIntegerExpression;
 	}
@@ -27756,8 +33005,10 @@
 		return getLiteralIntegerExpressionAccess().getRule();
 	}
 	
-	//LiteralRationalExpression fmlExpr::LiteralRationalExpression:
-	//	{fmlExpr::LiteralRationalExpression} numerator=EInteger '/' denominator=EInteger;
+	//LiteralRationalExpression returns fmlExpr::LiteralRationalExpression
+	//    : {fmlExpr::LiteralRationalExpression}
+	//        numerator=EInteger '/' denominator=EInteger
+	//    ;
 	public LiteralRationalExpressionElements getLiteralRationalExpressionAccess() {
 		return pLiteralRationalExpression;
 	}
@@ -27766,8 +33017,10 @@
 		return getLiteralRationalExpressionAccess().getRule();
 	}
 	
-	//LiteralFloatExpression fmlExpr::LiteralFloatExpression:
-	//	{fmlExpr::LiteralFloatExpression} value=EDouble;
+	//LiteralFloatExpression returns fmlExpr::LiteralFloatExpression
+	//    : {fmlExpr::LiteralFloatExpression}
+	//        value=EDouble
+	//    ;
 	public LiteralFloatExpressionElements getLiteralFloatExpressionAccess() {
 		return pLiteralFloatExpression;
 	}
@@ -27779,8 +33032,10 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Character / String Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralCharacterExpression fmlExpr::LiteralCharacterExpression:
-	//	{fmlExpr::LiteralCharacterExpression} value=ECharacter;
+	//LiteralCharacterExpression returns fmlExpr::LiteralCharacterExpression
+	//    : {fmlExpr::LiteralCharacterExpression}
+	//        value=ECharacter
+	//    ;
 	public LiteralCharacterExpressionElements getLiteralCharacterExpressionAccess() {
 		return pLiteralCharacterExpression;
 	}
@@ -27789,8 +33044,10 @@
 		return getLiteralCharacterExpressionAccess().getRule();
 	}
 	
-	//LiteralStringExpression fmlExpr::LiteralStringExpression:
-	//	{fmlExpr::LiteralStringExpression} value=EString;
+	//LiteralStringExpression returns fmlExpr::LiteralStringExpression
+	//    : {fmlExpr::LiteralStringExpression}
+	//        value=EString
+	//    ;
 	public LiteralStringExpressionElements getLiteralStringExpressionAccess() {
 		return pLiteralStringExpression;
 	}
@@ -27802,9 +33059,11 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Null Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralNullExpression fmlExpr::LiteralNullExpression:
-	//	{fmlExpr::LiteralNullExpression}
-	//	'$null' ('<' type=NullPrimitiveInstanceType '>')?;
+	//LiteralNullExpression returns fmlExpr::LiteralNullExpression
+	//    : {fmlExpr::LiteralNullExpression}
+	//        '$null' //type=AnyNullPrimitiveInstanceType
+	//        ( '<'  type=NullPrimitiveInstanceType  '>' )?
+	//    ;
 	public LiteralNullExpressionElements getLiteralNullExpressionAccess() {
 		return pLiteralNullExpression;
 	}
@@ -27813,8 +33072,10 @@
 		return getLiteralNullExpressionAccess().getRule();
 	}
 	
-	//AnyNullPrimitiveInstanceType fmlType::PrimitiveInstanceType:
-	//	{fmlType::PrimitiveInstanceType} expected=AnyPrimitiveInstanceKind;
+	//AnyNullPrimitiveInstanceType returns fmlType::PrimitiveInstanceType
+	//    : { fmlType::PrimitiveInstanceType }
+	//        expected=AnyPrimitiveInstanceKind
+	//    ;
 	public AnyNullPrimitiveInstanceTypeElements getAnyNullPrimitiveInstanceTypeAccess() {
 		return pAnyNullPrimitiveInstanceType;
 	}
@@ -27823,8 +33084,9 @@
 		return getAnyNullPrimitiveInstanceTypeAccess().getRule();
 	}
 	
-	//enum AnyPrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind:
-	//	any='$null';
+	//enum AnyPrimitiveInstanceKind returns fmlType::PrimitiveInstanceKind
+	//    : any='$null'
+	//    ;
 	public AnyPrimitiveInstanceKindElements getAnyPrimitiveInstanceKindAccess() {
 		return eAnyPrimitiveInstanceKind;
 	}
@@ -27833,9 +33095,12 @@
 		return getAnyPrimitiveInstanceKindAccess().getRule();
 	}
 	
-	//NullPrimitiveInstanceType fmlType::PrimitiveInstanceType:
-	//	{fmlType::PrimitiveInstanceType} expected=PrimitiveInstanceKind
-	//	| {fmlType::PrimitiveInstanceType} model=[fmlCommon::NamedElement|ESIdentifier];
+	//NullPrimitiveInstanceType returns fmlType::PrimitiveInstanceType
+	//    : { fmlType::PrimitiveInstanceType }
+	//        expected=PrimitiveInstanceKind
+	//    | { fmlType::PrimitiveInstanceType }
+	//        model=[fmlCommon::NamedElement|ESIdentifier]
+	//    ;
 	public NullPrimitiveInstanceTypeElements getNullPrimitiveInstanceTypeAccess() {
 		return pNullPrimitiveInstanceType;
 	}
@@ -27847,10 +33112,15 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Predefined Constant Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//AnyDataTypeReference fmlType::DataType:
-	//	SimpleDataType ({fmlType::DataTypeReference.support=current}
-	//	'[' multiplicity=DataTypeMultiplicity ']')?
-	//	| {fmlType::DataTypeReference} typeref=[fmlType::DataType|ESUfid] ('[' multiplicity=DataTypeMultiplicity ']')?;
+	//AnyDataTypeReference returns fmlType::DataType
+	//    : SimpleDataType
+	//        ( {fmlType::DataTypeReference.support=current}
+	//            '[' multiplicity=DataTypeMultiplicity ']'
+	//        )?
+	//    | {fmlType::DataTypeReference}
+	//        typeref=[fmlType::DataType|ESUfid]
+	//        ( '[' multiplicity=DataTypeMultiplicity ']' )?
+	//    ;
 	public AnyDataTypeReferenceElements getAnyDataTypeReferenceAccess() {
 		return pAnyDataTypeReference;
 	}
@@ -27859,9 +33129,11 @@
 		return getAnyDataTypeReferenceAccess().getRule();
 	}
 	
-	//LiteralAnyValueExpression fmlExpr::LiteralAnyValueExpression:
-	//	{fmlExpr::LiteralAnyValueExpression}
-	//	'$any' ('<' type=AnyDataTypeReference '>')?;
+	//LiteralAnyValueExpression returns fmlExpr::LiteralAnyValueExpression
+	//    : {fmlExpr::LiteralAnyValueExpression}
+	//        '$any'
+	//        ( '<'  type=AnyDataTypeReference  '>' )?
+	//    ;
 	public LiteralAnyValueExpressionElements getLiteralAnyValueExpressionAccess() {
 		return pLiteralAnyValueExpression;
 	}
@@ -27870,9 +33142,11 @@
 		return getLiteralAnyValueExpressionAccess().getRule();
 	}
 	
-	//LiteralOptionalValueExpression fmlExpr::LiteralOptionalValueExpression:
-	//	{fmlExpr::LiteralOptionalValueExpression}
-	//	'$optional' ('<' type=AnyDataTypeReference '>')?;
+	//LiteralOptionalValueExpression returns fmlExpr::LiteralOptionalValueExpression
+	//    : {fmlExpr::LiteralOptionalValueExpression}
+	//        '$optional'
+	//        ( '<'  type=AnyDataTypeReference  '>' )?
+	//    ;
 	public LiteralOptionalValueExpressionElements getLiteralOptionalValueExpressionAccess() {
 		return pLiteralOptionalValueExpression;
 	}
@@ -27881,9 +33155,11 @@
 		return getLiteralOptionalValueExpressionAccess().getRule();
 	}
 	
-	//LiteralNoneValueExpression fmlExpr::LiteralNoneValueExpression:
-	//	{fmlExpr::LiteralNoneValueExpression}
-	//	'$none' ('<' type=AnyDataTypeReference '>')?;
+	//LiteralNoneValueExpression returns fmlExpr::LiteralNoneValueExpression
+	//    : {fmlExpr::LiteralNoneValueExpression}
+	//        '$none'
+	//        ( '<'  type=AnyDataTypeReference  '>' )?
+	//    ;
 	public LiteralNoneValueExpressionElements getLiteralNoneValueExpressionAccess() {
 		return pLiteralNoneValueExpression;
 	}
@@ -27892,9 +33168,11 @@
 		return getLiteralNoneValueExpressionAccess().getRule();
 	}
 	
-	//LiteralAnyOrNoneValueExpression fmlExpr::LiteralAnyOrNoneValueExpression:
-	//	{fmlExpr::LiteralAnyOrNoneValueExpression}
-	//	'$any$none' ('<' type=AnyDataTypeReference '>')?;
+	//LiteralAnyOrNoneValueExpression returns fmlExpr::LiteralAnyOrNoneValueExpression
+	//    : {fmlExpr::LiteralAnyOrNoneValueExpression}
+	//        '$any$none'
+	//        ( '<'  type=AnyDataTypeReference  '>' )?
+	//    ;
 	public LiteralAnyOrNoneValueExpressionElements getLiteralAnyOrNoneValueExpressionAccess() {
 		return pLiteralAnyOrNoneValueExpression;
 	}
@@ -27906,9 +33184,15 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Collection Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralCollectionExpression fmlExpr::LiteralCollectionExpression:
-	//	{fmlExpr::LiteralCollectionExpression} ('<' datatype=DataType '>')?
-	//	'{' ((value+=Expression | value+=NamedExpression) (',' (value+=Expression | value+=NamedExpression))*)? '}';
+	//LiteralCollectionExpression returns fmlExpr::LiteralCollectionExpression
+	//    : {fmlExpr::LiteralCollectionExpression}
+	////        ( 'new' datatype=DataType )?
+	//        ( '<' datatype=DataType '>')?
+	//        '{' (
+	//            ( value+=Expression | value+=NamedExpression )
+	//            ( ',' ( value+=Expression | value+=NamedExpression ) )*
+	//        )? '}'
+	//    ;
 	public LiteralCollectionExpressionElements getLiteralCollectionExpressionAccess() {
 		return pLiteralCollectionExpression;
 	}
@@ -27920,11 +33204,12 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Literal Reference Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralReferenceExpression fmlExpr::LiteralReferenceExpression:
-	//	LiteralReferenceElement
-	//	| LiteralReferenceVariableContext
-	//	| LiteralReferenceMachineContext
-	//	| LiteralEnvExpression;
+	//LiteralReferenceExpression returns fmlExpr::LiteralReferenceExpression
+	//    : LiteralReferenceElement
+	//    | LiteralReferenceVariableContext
+	//    | LiteralReferenceMachineContext
+	//    | LiteralEnvExpression
+	//    ;
 	public LiteralReferenceExpressionElements getLiteralReferenceExpressionAccess() {
 		return pLiteralReferenceExpression;
 	}
@@ -27933,13 +33218,17 @@
 		return getLiteralReferenceExpressionAccess().getRule();
 	}
 	
-	//LiteralReferenceElement fmlExpr::LiteralReferenceElement:
-	//	{fmlExpr::LiteralReferenceElement} ('spec::' | '::')? element=[fmlCommon::NamedElement|ESIdentifier]
-	//	(kind=ValueIndexExpressionKind
-	//	arg=PositionalTupleExpressionList ']'
-	//	// '(' parameter ',' ... ',' parameter ')'
-	//	| kind=ValueParameterExpressionKind
-	//	arg=MixTupleExpressionList ')')?;
+	//LiteralReferenceElement returns fmlExpr::LiteralReferenceElement
+	//    : {fmlExpr::LiteralReferenceElement}
+	//        ( 'spec::' | '::' )?  element=[fmlCommon::NamedElement|ESIdentifier]
+	//        // '[' index ',' ... ',' index ']'
+	//        ( kind=ValueIndexExpressionKind
+	//            arg=PositionalTupleExpressionList  ']'
+	//        // '(' parameter ',' ... ',' parameter ')'
+	//        | kind=ValueParameterExpressionKind
+	//            arg=MixTupleExpressionList  ')'
+	//        )?
+	//    ;
 	public LiteralReferenceElementElements getLiteralReferenceElementAccess() {
 		return pLiteralReferenceElement;
 	}
@@ -27948,8 +33237,10 @@
 		return getLiteralReferenceElementAccess().getRule();
 	}
 	
-	//LiteralPureReferenceElement fmlExpr::LiteralReferenceElement:
-	//	{fmlExpr::LiteralReferenceElement} ('spec::' | '::')? element=[fmlCommon::NamedElement|ESIdentifier];
+	//LiteralPureReferenceElement returns fmlExpr::LiteralReferenceElement
+	//    : {fmlExpr::LiteralReferenceElement}
+	//        ( 'spec::' | '::' )?  element=[fmlCommon::NamedElement|ESIdentifier]
+	//    ;
 	public LiteralPureReferenceElementElements getLiteralPureReferenceElementAccess() {
 		return pLiteralPureReferenceElement;
 	}
@@ -27958,11 +33249,12 @@
 		return getLiteralPureReferenceElementAccess().getRule();
 	}
 	
-	//LiteralReferenceVariableContext fmlExpr::LiteralReferenceExpression:
-	//	LiteralTimeExpression
-	//	| LiteralTimeDeltaExpression
-	//	| LiteralTimeInitialExpression
-	//	| LiteralTimeDeltaInitialExpression;
+	//LiteralReferenceVariableContext returns fmlExpr::LiteralReferenceExpression
+	//    : LiteralTimeExpression
+	//    | LiteralTimeDeltaExpression
+	//    | LiteralTimeInitialExpression
+	//    | LiteralTimeDeltaInitialExpression
+	//    ;
 	public LiteralReferenceVariableContextElements getLiteralReferenceVariableContextAccess() {
 		return pLiteralReferenceVariableContext;
 	}
@@ -27971,8 +33263,9 @@
 		return getLiteralReferenceVariableContextAccess().getRule();
 	}
 	
-	//LiteralTimeExpression fmlExpr::LiteralTimeExpression:
-	//	{fmlExpr::LiteralTimeExpression} '$time';
+	//LiteralTimeExpression returns fmlExpr::LiteralTimeExpression
+	//    : {fmlExpr::LiteralTimeExpression} ( '$time' )
+	//    ;
 	public LiteralTimeExpressionElements getLiteralTimeExpressionAccess() {
 		return pLiteralTimeExpression;
 	}
@@ -27981,8 +33274,9 @@
 		return getLiteralTimeExpressionAccess().getRule();
 	}
 	
-	//LiteralTimeInitialExpression fmlExpr::LiteralTimeExpression:
-	//	{fmlExpr::LiteralTimeExpression} '$time#initial';
+	//LiteralTimeInitialExpression returns fmlExpr::LiteralTimeExpression
+	//    : {fmlExpr::LiteralTimeExpression} ( '$time#initial' )
+	//    ;
 	public LiteralTimeInitialExpressionElements getLiteralTimeInitialExpressionAccess() {
 		return pLiteralTimeInitialExpression;
 	}
@@ -27991,8 +33285,9 @@
 		return getLiteralTimeInitialExpressionAccess().getRule();
 	}
 	
-	//LiteralTimeDeltaExpression fmlExpr::LiteralTimeDeltaExpression:
-	//	{fmlExpr::LiteralTimeDeltaExpression} '$delta';
+	//LiteralTimeDeltaExpression returns fmlExpr::LiteralTimeDeltaExpression
+	//    : {fmlExpr::LiteralTimeDeltaExpression} ( '$delta' )
+	//    ;
 	public LiteralTimeDeltaExpressionElements getLiteralTimeDeltaExpressionAccess() {
 		return pLiteralTimeDeltaExpression;
 	}
@@ -28001,8 +33296,9 @@
 		return getLiteralTimeDeltaExpressionAccess().getRule();
 	}
 	
-	//LiteralTimeDeltaInitialExpression fmlExpr::LiteralTimeDeltaExpression:
-	//	{fmlExpr::LiteralTimeDeltaExpression} '$delta#initial';
+	//LiteralTimeDeltaInitialExpression returns fmlExpr::LiteralTimeDeltaExpression
+	//    : {fmlExpr::LiteralTimeDeltaExpression} ( '$delta#initial' )
+	//    ;
 	public LiteralTimeDeltaInitialExpressionElements getLiteralTimeDeltaInitialExpressionAccess() {
 		return pLiteralTimeDeltaInitialExpression;
 	}
@@ -28011,13 +33307,14 @@
 		return getLiteralTimeDeltaInitialExpressionAccess().getRule();
 	}
 	
-	//LiteralReferenceMachineContext fmlExpr::LiteralReferenceExpression:
-	//	LiteralThisExpression
-	//	| LiteralSelfExpression
-	//	| LiteralParentExpression
-	//	| LiteralSuperExpression
-	//	| LiteralSystemExpression
-	//	| LiteralEnvExpression;
+	//LiteralReferenceMachineContext returns fmlExpr::LiteralReferenceExpression
+	//    : LiteralThisExpression
+	//    | LiteralSelfExpression
+	//    | LiteralParentExpression
+	//    | LiteralSuperExpression
+	//    | LiteralSystemExpression
+	//    | LiteralEnvExpression
+	//    ;
 	public LiteralReferenceMachineContextElements getLiteralReferenceMachineContextAccess() {
 		return pLiteralReferenceMachineContext;
 	}
@@ -28026,8 +33323,9 @@
 		return getLiteralReferenceMachineContextAccess().getRule();
 	}
 	
-	//LiteralThisExpression fmlExpr::LiteralThisExpression:
-	//	{fmlExpr::LiteralThisExpression} '$this';
+	//LiteralThisExpression returns fmlExpr::LiteralThisExpression
+	//    : {fmlExpr::LiteralThisExpression} ( '$this' )
+	//    ;
 	public LiteralThisExpressionElements getLiteralThisExpressionAccess() {
 		return pLiteralThisExpression;
 	}
@@ -28036,8 +33334,10 @@
 		return getLiteralThisExpressionAccess().getRule();
 	}
 	
-	//LiteralSelfExpression fmlExpr::LiteralSelfExpression:
-	//	{fmlExpr::LiteralSelfExpression} '$self' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?;
+	//LiteralSelfExpression returns fmlExpr::LiteralSelfExpression
+	//    : {fmlExpr::LiteralSelfExpression} ( '$self' )
+	//        ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
+	//    ;
 	public LiteralSelfExpressionElements getLiteralSelfExpressionAccess() {
 		return pLiteralSelfExpression;
 	}
@@ -28046,8 +33346,10 @@
 		return getLiteralSelfExpressionAccess().getRule();
 	}
 	
-	//LiteralParentExpression fmlExpr::LiteralParentExpression:
-	//	{fmlExpr::LiteralParentExpression} '$parent' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?;
+	//LiteralParentExpression returns fmlExpr::LiteralParentExpression
+	//    : {fmlExpr::LiteralParentExpression} ( '$parent' )
+	//        ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
+	//    ;
 	public LiteralParentExpressionElements getLiteralParentExpressionAccess() {
 		return pLiteralParentExpression;
 	}
@@ -28056,8 +33358,10 @@
 		return getLiteralParentExpressionAccess().getRule();
 	}
 	
-	//LiteralSuperExpression fmlExpr::LiteralSuperExpression:
-	//	{fmlExpr::LiteralSuperExpression} '$super' ('<' 'model:'? model=[fmlInfra::Machine|ESUfid] '>')?;
+	//LiteralSuperExpression returns fmlExpr::LiteralSuperExpression
+	//    : {fmlExpr::LiteralSuperExpression} ( '$super' )
+	//        ( '<' ( 'model:' )? model=[fmlInfra::Machine|ESUfid] '>' )?
+	//    ;
 	public LiteralSuperExpressionElements getLiteralSuperExpressionAccess() {
 		return pLiteralSuperExpression;
 	}
@@ -28066,8 +33370,9 @@
 		return getLiteralSuperExpressionAccess().getRule();
 	}
 	
-	//LiteralSystemExpression fmlExpr::LiteralSystemExpression:
-	//	{fmlExpr::LiteralSystemExpression} '$system';
+	//LiteralSystemExpression returns fmlExpr::LiteralSystemExpression
+	//    : {fmlExpr::LiteralSystemExpression} ( '$system' )
+	//    ;
 	public LiteralSystemExpressionElements getLiteralSystemExpressionAccess() {
 		return pLiteralSystemExpression;
 	}
@@ -28076,8 +33381,9 @@
 		return getLiteralSystemExpressionAccess().getRule();
 	}
 	
-	//LiteralEnvExpression fmlExpr::LiteralEnvExpression:
-	//	{fmlExpr::LiteralEnvExpression} '$env';
+	//LiteralEnvExpression returns fmlExpr::LiteralEnvExpression
+	//    : {fmlExpr::LiteralEnvExpression} ( '$env' )
+	//    ;
 	public LiteralEnvExpressionElements getLiteralEnvExpressionAccess() {
 		return pLiteralEnvExpression;
 	}
@@ -28089,9 +33395,10 @@
 	//////////////////////////////////////////////////////////////////////////////////
 	//// Value Element Specification Expression Rules
 	//////////////////////////////////////////////////////////////////////////////////
-	//LiteralPureReferenceExpression fmlExpr::LiteralReferenceExpression:
-	//	LiteralPureReferenceElement
-	//	| LiteralReferenceMachineContext;
+	//LiteralPureReferenceExpression returns fmlExpr::LiteralReferenceExpression
+	//    : LiteralPureReferenceElement
+	//    | LiteralReferenceMachineContext
+	//    ;
 	public LiteralPureReferenceExpressionElements getLiteralPureReferenceExpressionAccess() {
 		return pLiteralPureReferenceExpression;
 	}
@@ -28100,9 +33407,11 @@
 		return getLiteralPureReferenceExpressionAccess().getRule();
 	}
 	
-	//LiteralReferenceSpecification fmlExpr::LiteralReferenceSpecification:
-	//	{fmlExpr::LiteralReferenceSpecification} (parent+=LiteralReferenceExpression ('.' | '->'))*
-	//	element=LiteralReferenceExpression;
+	//LiteralReferenceSpecification returns fmlExpr::LiteralReferenceSpecification
+	//    : { fmlExpr::LiteralReferenceSpecification }
+	//        ( parent+=LiteralReferenceExpression ( '.'  |  '->' ) )*
+	//        element=LiteralReferenceExpression
+	//    ;
 	public LiteralReferenceSpecificationElements getLiteralReferenceSpecificationAccess() {
 		return pLiteralReferenceSpecification;
 	}
@@ -28111,29 +33420,45 @@
 		return getLiteralReferenceSpecificationAccess().getRule();
 	}
 	
-	//ValueSelectionExpression fmlExpr::Expression:
-	//	LiteralReferenceExpression ({fmlExpr::ValueElementSpecification.parent=current}
-	//	'.' //kind=ValueDotFieldExpressionKind
-	//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-	//	arg=PositionalTupleExpressionList ']'
-	//	//			// TODO '(' parameter ',' ... ',' parameter ')'
-	//	//			| kind=ValueParameterExpressionKind
-	//	//				arg=MixTupleExpressionList  ')'
-	//)?)* ({fmlExpr::ValueElementSpecification.parent=current}
-	//	'->' //kind=ValueArrowFieldExpressionKind
-	//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-	//	arg=PositionalTupleExpressionList ']'
-	//	//			// TODO '(' parameter ',' ... ',' parameter ')'
-	//	//			| kind=ValueParameterExpressionKind
-	//	//				arg=MixTupleExpressionList  ')'
-	//)? ({fmlExpr::ValueElementSpecification.parent=current}
-	//	'.' //kind=ValueDotFieldExpressionKind
-	//	element=[fmlCommon::NamedElement|ESIdentifier] (kind=ValueIndexExpressionKind
-	//	arg=PositionalTupleExpressionList ']'
-	//	//				// TODO '(' parameter ',' ... ',' parameter ')'
-	//	//				| kind=ValueParameterExpressionKind
-	//	//					arg=MixTupleExpressionList  ')'
-	//)?)*)?;
+	//ValueSelectionExpression returns fmlExpr::Expression
+	//    : LiteralReferenceExpression
+	//        // '.' element
+	//        ( { fmlExpr::ValueElementSpecification.parent=current }
+	//            '.' //kind=ValueDotFieldExpressionKind
+	//            element=[fmlCommon::NamedElement|ESIdentifier]
+	//            // '[' index ',' ... ',' index ']'
+	//            ( kind=ValueIndexExpressionKind
+	//                arg=PositionalTupleExpressionList  ']'
+	////            // TODO '(' parameter ',' ... ',' parameter ')'
+	////            | kind=ValueParameterExpressionKind
+	////                arg=MixTupleExpressionList  ')'
+	//            )?
+	//        )*
+	//        // '->' element
+	//        ( { fmlExpr::ValueElementSpecification.parent=current }
+	//            '->' //kind=ValueArrowFieldExpressionKind
+	//            element=[fmlCommon::NamedElement|ESIdentifier]
+	//            // '[' index ',' ... ',' index ']'
+	//            ( kind=ValueIndexExpressionKind
+	//                arg=PositionalTupleExpressionList  ']'
+	////            // TODO '(' parameter ',' ... ',' parameter ')'
+	////            | kind=ValueParameterExpressionKind
+	////                arg=MixTupleExpressionList  ')'
+	//            )?
+	//            // '.' element
+	//            ( { fmlExpr::ValueElementSpecification.parent=current }
+	//                 '.' //kind=ValueDotFieldExpressionKind
+	//                element=[fmlCommon::NamedElement|ESIdentifier]
+	//                // '[' index ',' ... ',' index ']'
+	//                ( kind=ValueIndexExpressionKind
+	//                    arg=PositionalTupleExpressionList  ']'
+	////                // TODO '(' parameter ',' ... ',' parameter ')'
+	////                | kind=ValueParameterExpressionKind
+	////                    arg=MixTupleExpressionList  ')'
+	//                )?
+	//            )*
+	//        )?
+	//    ;
 	public ValueSelectionExpressionElements getValueSelectionExpressionAccess() {
 		return pValueSelectionExpression;
 	}
@@ -28144,29 +33469,34 @@
 	
 	////ValuePureNamedElementExpression
 	////ValuePureNamedElementExpression returns fmlExpr::Expression
-	////	: LiteralPureReferenceExpression
+	////    : LiteralPureReferenceExpression
 	////
-	////		// '.' element
-	////		( { fmlExpr::ValueElementSpecification.parent=current }
-	////			kind=ValueDotFieldExpressionKind
-	////			element=[fmlCommon::NamedElement|ESIdentifier]
-	////		)*
+	////        // '.' element
+	////        ( { fmlExpr::ValueElementSpecification.parent=current }
+	////            kind=ValueDotFieldExpressionKind
+	////            element=[fmlCommon::NamedElement|ESIdentifier]
+	////        )*
 	////
-	////		// '->' element
-	////		( { fmlExpr::ValueElementSpecification.parent=current }
-	////			kind=ValueArrowFieldExpressionKind
-	////			element=[fmlCommon::NamedElement|ESIdentifier]
+	////        // '->' element
+	////        ( { fmlExpr::ValueElementSpecification.parent=current }
+	////            kind=ValueArrowFieldExpressionKind
+	////            element=[fmlCommon::NamedElement|ESIdentifier]
 	////
-	////			// '.' element
-	////			( { fmlExpr::ValueElementSpecification.parent=current }
-	////				kind=ValueDotFieldExpressionKind
-	////				element=[fmlCommon::NamedElement|ESIdentifier]
-	////			)*
-	////		)?
-	////	;
-	//ValuePureNamedMachineExpression fmlExpr::Expression:
-	//	LiteralPureReferenceExpression ({fmlExpr::ValueElementSpecification.parent=current} kind=(ValueDotFieldExpressionKind
-	//	| ValueArrowFieldExpressionKind) element=[fmlCommon::NamedElement|ESIdentifier])*;
+	////            // '.' element
+	////            ( { fmlExpr::ValueElementSpecification.parent=current }
+	////                kind=ValueDotFieldExpressionKind
+	////                element=[fmlCommon::NamedElement|ESIdentifier]
+	////            )*
+	////        )?
+	////    ;
+	//ValuePureNamedMachineExpression returns fmlExpr::Expression
+	//    : LiteralPureReferenceExpression
+	//        // ( '.' | '->' ) element
+	//        ( { fmlExpr::ValueElementSpecification.parent=current }
+	//            kind=(ValueDotFieldExpressionKind | ValueArrowFieldExpressionKind )
+	//            element=[fmlCommon::NamedElement|ESIdentifier]
+	//        )*
+	//    ;
 	public ValuePureNamedMachineExpressionElements getValuePureNamedMachineExpressionAccess() {
 		return pValuePureNamedMachineExpression;
 	}
@@ -28175,8 +33505,54 @@
 		return getValuePureNamedMachineExpressionAccess().getRule();
 	}
 	
-	//enum ValueDotFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-	//	field='.';
+	////ValueAnyElementExpression returns fmlExpr::ValueElementSpecification
+	////    : element=[fmlCommon::NamedElement|ESIdentifier]
+	////
+	////        // '.' element
+	////        ( { fmlExpr::ValueElementSpecification.parent=current }
+	////            kind=ValueDotFieldExpressionKind
+	////            element=[fmlCommon::NamedElement|ESIdentifier]
+	////
+	////        // '[' index ',' ... ',' index ']'
+	////        | { fmlExpr::ValueElementSpecification.parent=current }
+	////            kind=ValueIndexExpressionKind
+	////            arg=PositionalTupleExpressionList
+	////            ']'
+	////
+	////        // '(' parameter ',' ... ',' parameter ')'
+	////        | { fmlExpr::ValueElementSpecification.parent=current }
+	////            kind=ValueParameterExpressionKind
+	////            arg=MixTupleExpressionList
+	////            ')'
+	////        )*
+	////
+	////        // '->' element
+	////        ( { fmlExpr::ValueElementSpecification.parent=current }
+	////            kind=ValueArrowFieldExpressionKind
+	////            element=[fmlCommon::NamedElement|ESIdentifier]
+	////
+	////            // '.' element
+	////            ( { fmlExpr::ValueElementSpecification.parent=current }
+	////                kind=ValueDotFieldExpressionKind
+	////                element=[fmlCommon::NamedElement|ESIdentifier]
+	////
+	////            // '[' index ',' ... ',' index ']'
+	////            | { fmlExpr::ValueElementSpecification.parent=current }
+	////                kind=ValueIndexExpressionKind
+	////                arg=PositionalTupleExpressionList
+	////                ']'
+	////
+	////            // '(' parameter ',' ... ',' parameter ')'
+	////            | { fmlExpr::ValueElementSpecification.parent=current }
+	////                kind=ValueParameterExpressionKind
+	////                arg=MixTupleExpressionList
+	////                ')'
+	////            )*
+	////        )?
+	////    ;
+	//enum ValueDotFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+	//    : field='.'
+	//    ;
 	public ValueDotFieldExpressionKindElements getValueDotFieldExpressionKindAccess() {
 		return eValueDotFieldExpressionKind;
 	}
@@ -28185,8 +33561,9 @@
 		return getValueDotFieldExpressionKindAccess().getRule();
 	}
 	
-	//enum ValueColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-	//	field=':';
+	//enum ValueColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+	//    : field=':'
+	//    ;
 	public ValueColonFieldExpressionKindElements getValueColonFieldExpressionKindAccess() {
 		return eValueColonFieldExpressionKind;
 	}
@@ -28195,8 +33572,9 @@
 		return getValueColonFieldExpressionKindAccess().getRule();
 	}
 	
-	//enum ValueDoubleColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-	//	field='::';
+	//enum ValueDoubleColonFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+	//    : field='::'
+	//    ;
 	public ValueDoubleColonFieldExpressionKindElements getValueDoubleColonFieldExpressionKindAccess() {
 		return eValueDoubleColonFieldExpressionKind;
 	}
@@ -28205,8 +33583,9 @@
 		return getValueDoubleColonFieldExpressionKindAccess().getRule();
 	}
 	
-	//enum ValueArrowFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-	//	field='->';
+	//enum ValueArrowFieldExpressionKind returns fmlExpr::ValueElementSpecificationKind
+	//    : field='->'
+	//    ;
 	public ValueArrowFieldExpressionKindElements getValueArrowFieldExpressionKindAccess() {
 		return eValueArrowFieldExpressionKind;
 	}
@@ -28215,8 +33594,9 @@
 		return getValueArrowFieldExpressionKindAccess().getRule();
 	}
 	
-	//enum ValueIndexExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-	//	index='[';
+	//enum ValueIndexExpressionKind returns fmlExpr::ValueElementSpecificationKind
+	//    : index='['
+	//    ;
 	public ValueIndexExpressionKindElements getValueIndexExpressionKindAccess() {
 		return eValueIndexExpressionKind;
 	}
@@ -28225,8 +33605,9 @@
 		return getValueIndexExpressionKindAccess().getRule();
 	}
 	
-	//enum ValueParameterExpressionKind returns fmlExpr::ValueElementSpecificationKind:
-	//	parameter='(';
+	//enum ValueParameterExpressionKind returns fmlExpr::ValueElementSpecificationKind
+	//    : parameter='('
+	//    ;
 	public ValueParameterExpressionKindElements getValueParameterExpressionKindAccess() {
 		return eValueParameterExpressionKind;
 	}
@@ -28235,39 +33616,35 @@
 		return getValueParameterExpressionKindAccess().getRule();
 	}
 	
-	//terminal ID:
-	//	'^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*;
+	//terminal ID: '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
 	public TerminalRule getIDRule() {
 		return gaTerminals.getIDRule();
 	}
 	
 	//terminal STRING:
-	//	'"' ('\\' . | !('\\' | '"'))* '"' |
-	//	"'" ('\\' . | !('\\' | "'"))* "'";
+	//            '"' ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|'"') )* '"' |
+	//            "'" ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|"'") )* "'"
+	//        ;
 	public TerminalRule getSTRINGRule() {
 		return gaTerminals.getSTRINGRule();
 	}
 	
-	//terminal ML_COMMENT:
-	//	'/*'->'*/';
+	//terminal ML_COMMENT : '/*' -> '*/';
 	public TerminalRule getML_COMMENTRule() {
 		return gaTerminals.getML_COMMENTRule();
 	}
 	
-	//terminal SL_COMMENT:
-	//	'//' !('\n' | '\r')* ('\r'? '\n')?;
+	//terminal SL_COMMENT : '//' !('\n'|'\r')* ('\r'? '\n')?;
 	public TerminalRule getSL_COMMENTRule() {
 		return gaTerminals.getSL_COMMENTRule();
 	}
 	
-	//terminal WS:
-	//	' ' | '\t' | '\r' | '\n'+;
+	//terminal WS         : (' '|'\t'|'\r'|'\n')+;
 	public TerminalRule getWSRule() {
 		return gaTerminals.getWSRule();
 	}
 	
-	//terminal ANY_OTHER:
-	//	.;
+	//terminal ANY_OTHER: .;
 	public TerminalRule getANY_OTHERRule() {
 		return gaTerminals.getANY_OTHERRule();
 	}
diff --git a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/validation/AbstractFormalMLValidator.java b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/validation/AbstractFormalMLValidator.java
index 64cee28..9ed326a 100644
--- a/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/validation/AbstractFormalMLValidator.java
+++ b/editor/xlia/org.eclipse.efm.formalml.xtext/src-gen/org/eclipse/efm/formalml/xtext/validation/AbstractFormalMLValidator.java
@@ -11,7 +11,7 @@
 *  - Initial API and implementation
 *
 ******************************************************************************
-* Generated by Xtext 2.21.0
+* Generated by Xtext 2.25.0
 *****************************************************************************/
 package org.eclipse.efm.formalml.xtext.validation;
 
diff --git a/editor/xlia/pom.xml b/editor/xlia/pom.xml
index 814dbd3..0efc45c 100644
--- a/editor/xlia/pom.xml
+++ b/editor/xlia/pom.xml
@@ -27,6 +27,7 @@
 
 	<modules>
 		<module>org.eclipse.efm.formalml.ecore</module>
+		<module>org.eclipse.efm.formalml.plantuml</module>
 		<module>org.eclipse.efm.formalml.xtext</module>
 		<module>org.eclipse.efm.formalml.xtext.ide</module>
 		<module>org.eclipse.efm.formalml.xtext.tests</module>
diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/.classpath b/execution/org.eclipse.efm.execution.configuration.common.ui/.classpath
index 7d64b57..3ec8668 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/.classpath
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

 	<classpathentry excluding="org/eclipse/efm/execution/configuration/common/ui/editors/table/TraceElementTableViewer2.java|org/eclipse/efm/execution/configuration/common/ui/util/GenericCompositeCreator.java" kind="src" path="src"/>

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

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/META-INF/MANIFEST.MF b/execution/org.eclipse.efm.execution.configuration.common.ui/META-INF/MANIFEST.MF
index c48092a..57dda32 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/META-INF/MANIFEST.MF
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@
  org.eclipse.ui.forms,
  org.eclipse.jface,
  org.eclipse.core.resources
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.efm.execution.configuration.common.ui.api,
  org.eclipse.efm.execution.configuration.common.ui.editors,
diff --git a/execution/org.eclipse.efm.execution.core/.classpath b/execution/org.eclipse.efm.execution.core/.classpath
index f2b475a..dcfdc28 100644
--- a/execution/org.eclipse.efm.execution.core/.classpath
+++ b/execution/org.eclipse.efm.execution.core/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

 	<classpathentry kind="src" path="src-gen"/>

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

diff --git a/execution/org.eclipse.efm.execution.core/META-INF/MANIFEST.MF b/execution/org.eclipse.efm.execution.core/META-INF/MANIFEST.MF
index 38aeb19..143d481 100644
--- a/execution/org.eclipse.efm.execution.core/META-INF/MANIFEST.MF
+++ b/execution/org.eclipse.efm.execution.core/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.emf.mwe.utils,
  com.google.guava,
  org.eclipse.xtext
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.efm.execution.core,
  org.eclipse.efm.execution.core.preferences,
  org.eclipse.efm.execution.core.util,
diff --git a/execution/org.eclipse.efm.execution.launchconfiguration/.classpath b/execution/org.eclipse.efm.execution.launchconfiguration/.classpath
index b862a29..ca3785c 100644
--- a/execution/org.eclipse.efm.execution.launchconfiguration/.classpath
+++ b/execution/org.eclipse.efm.execution.launchconfiguration/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF b/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF
index 31c7b58..eb17069 100644
--- a/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF
+++ b/execution/org.eclipse.efm.execution.launchconfiguration/META-INF/MANIFEST.MF
@@ -31,7 +31,7 @@
  org.eclipse.efm.modeling.doc.helpcontents,
  org.eclipse.efm.execution.configuration.common.ui,
  org.eclipse.efm.modeling.codegen.xlia.sdf.polygraph
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.efm.execution.launchconfiguration,
  org.eclipse.efm.execution.launchconfiguration.job
 Bundle-ActivationPolicy: lazy
diff --git a/execution/org.eclipse.efm.execution.ui.views/.classpath b/execution/org.eclipse.efm.execution.ui.views/.classpath
index b862a29..ca3785c 100644
--- a/execution/org.eclipse.efm.execution.ui.views/.classpath
+++ b/execution/org.eclipse.efm.execution.ui.views/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF b/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF
index 32537f8..d6d238e 100644
--- a/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF
+++ b/execution/org.eclipse.efm.execution.ui.views/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: Views
 Bundle-SymbolicName: org.eclipse.efm.execution.ui.views;singleton:=true
 Bundle-Version: 0.0.1.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.ui,
  org.eclipse.jface,
@@ -17,8 +17,6 @@
  org.eclipse.efm.execution.core,
  org.eclipse.efm.execution.launchconfiguration,
  org.eclipse.ui.dialogs,
- org.eclipse.ui.forms.events,
- org.eclipse.ui.forms.widgets,
  org.eclipse.ui.model,
  org.eclipse.ui.views.navigator
 Bundle-Activator: org.eclipse.efm.execution.ui.views.Activator
diff --git a/execution/org.eclipse.efm.execution.ui/.classpath b/execution/org.eclipse.efm.execution.ui/.classpath
index b862a29..ca3785c 100644
--- a/execution/org.eclipse.efm.execution.ui/.classpath
+++ b/execution/org.eclipse.efm.execution.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/execution/org.eclipse.efm.execution.ui/META-INF/MANIFEST.MF b/execution/org.eclipse.efm.execution.ui/META-INF/MANIFEST.MF
index db39eb5..6fe721a 100644
--- a/execution/org.eclipse.efm.execution.ui/META-INF/MANIFEST.MF
+++ b/execution/org.eclipse.efm.execution.ui/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
  org.eclipse.efm.execution.ui.views,
  org.eclipse.efm.execution.launchconfiguration,
  org.eclipse.ui.console
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.efm.execution.ui
 Automatic-Module-Name: org.eclipse.efm.execution.ui
diff --git a/features/org.eclipse.efm.modeling.dependencies.feature/feature.xml b/features/org.eclipse.efm.modeling.dependencies.feature/feature.xml
index 49cfbd3..385d2bb 100644
--- a/features/org.eclipse.efm.modeling.dependencies.feature/feature.xml
+++ b/features/org.eclipse.efm.modeling.dependencies.feature/feature.xml
@@ -94,86 +94,86 @@
          version="0.0.0"/>

 

    <requires>

-      <import plugin="org.eclipse.emf.codegen.ecore" version="2.7.0" match="compatible"/>

-      <import plugin="org.eclipse.emf.ecore.xmi" version="2.7.0" match="compatible"/>

-      <import plugin="org.eclipse.emf.edit" version="2.7.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.common" version="1.4.0" match="compatible"/>

-      <import plugin="org.eclipse.jface.databinding" version="1.2.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.core.databinding.beans" version="1.1.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.swt" version="3.4.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.core.databinding" version="1.1.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.jface" version="3.4.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.core.databinding.property" version="1.1.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.equinox.common" version="3.4.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.ui" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.uml2.codegen.ecore" version="1.8.0"/>

-      <import plugin="org.eclipse.uml2.uml.resources" version="4.0.0"/>

-      <import plugin="org.eclipse.ocl.pivot" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.essentialocl" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.pivot.uml" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.completeocl.ui" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.oclstdlib.ui" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.core.filesystem" version="1.2.0" match="compatible"/>

-      <import plugin="org.eclipse.debug.core" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.ui.console" version="3.4.0" match="compatible"/>

-      <import plugin="org.eclipse.ui.navigator" version="3.4.0" match="compatible"/>

-      <import plugin="org.eclipse.ui.forms" version="3.4.0" match="compatible"/>

-      <import plugin="org.eclipse.uml2.uml" version="4.0.0"/>

-      <import plugin="org.eclipse.ocl.examples.debug" version="2.1.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.examples.debug.vm.ui" version="2.1.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.examples.debug.vm" version="2.1.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.base" version="1.2.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.completeocl" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.oclinecore.ui" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ui.ide" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.common.ui" version="1.2.200" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.markup.ui" version="1.3.0" match="compatible"/>

-      <import plugin="org.apache.xerces" version="2.9.0" match="compatible"/>

-      <import plugin="org.eclipse.emf.codegen" version="2.6.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.base" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.markup" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.base.ui" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.jdt.core" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.emf.ecore.editor" version="2.7.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.essentialocl.ui" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.oclinecore" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.examples.ui" version="1.4.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.oclstdlib" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.debug.ui" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.equinox.frameworkadmin.equinox" version="1.0.0" match="compatible"/>

-      <import plugin="org.eclipse.pde.core" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.core.expressions" version="3.6.0" match="compatible"/>

-      <import plugin="org.eclipse.core.runtime" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.core.resources" version="3.5.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.common" version="1.0.0" match="compatible"/>

-      <import plugin="org.eclipse.xtext.ui" version="2.9.0" match="compatible"/>

-      <import plugin="org.eclipse.xtext.ui.shared" version="2.9.0" match="compatible"/>

-      <import plugin="org.eclipse.core.expressions" version="3.4.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.essentialocl.ui" version="1.2.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.completeocl" version="1.2.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.oclinecore" version="1.2.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.xtext.oclstdlib" version="1.2.0" match="compatible"/>

-      <import plugin="org.eclipse.xtext.builder" version="2.9.0" match="compatible"/>

-      <import plugin="org.eclipse.ocl.examples.emf.validation.validity.ui" version="2.4.0" match="compatible"/>

-      <import plugin="org.eclipse.core.runtime" version="3.14.0" match="compatible"/>

-      <import plugin="org.eclipse.core.resources" version="3.13.0" match="compatible"/>

-      <import plugin="org.eclipse.wst.common.uriresolver" version="1.2.300" match="compatible"/>

-      <import plugin="org.eclipse.wst.sse.core" version="1.2.0" match="equivalent"/>

-      <import plugin="org.eclipse.wst.common.core" version="1.3.0" match="compatible"/>

-      <import plugin="org.eclipse.osgi.services" version="3.7.0" match="compatible"/>

-      <import plugin="org.eclipse.core.runtime" version="3.4.0" match="compatible"/>

-      <import plugin="org.eclipse.core.resources" version="3.4.0" match="compatible"/>

-      <import plugin="org.eclipse.xtext" version="2.9.0" match="compatible"/>

-      <import plugin="org.eclipse.jdt.core" version="3.7.0" match="compatible"/>

-      <import plugin="org.eclipse.text" version="3.6.0" match="compatible"/>

-      <import plugin="org.eclipse.core.jobs" version="3.10.0" match="compatible"/>

-      <import plugin="org.eclipse.core.filebuffers" version="3.6.0" match="compatible"/>

-      <import plugin="org.eclipse.emf.common" version="2.14.0" match="compatible"/>

-      <import plugin="org.eclipse.core.filesystem" version="1.7.0" match="compatible"/>

-      <import plugin="org.eclipse.core.expressions" version="3.6.100" match="compatible"/>

-      <import plugin="org.eclipse.core.runtime" version="3.15.0" match="compatible"/>

-      <import plugin="org.eclipse.core.resources" version="3.12.0" match="compatible"/>

-      <import feature="org.eclipse.nebula.widgets.cdatetime.feature" version="1.3.0.201812241324"/>

+      <import plugin="org.eclipse.emf.codegen.ecore"/>

+      <import plugin="org.eclipse.emf.ecore.xmi"/>

+      <import plugin="org.eclipse.emf.edit"/>

+      <import plugin="org.eclipse.ocl.common"/>

+      <import plugin="org.eclipse.jface.databinding"/>

+      <import plugin="org.eclipse.core.databinding.beans"/>

+      <import plugin="org.eclipse.swt"/>

+      <import plugin="org.eclipse.core.databinding"/>

+      <import plugin="org.eclipse.jface"/>

+      <import plugin="org.eclipse.core.databinding.property"/>

+      <import plugin="org.eclipse.equinox.common"/>

+      <import plugin="org.eclipse.ui"/>

+      <import plugin="org.eclipse.uml2.codegen.ecore"/>

+      <import plugin="org.eclipse.uml2.uml.resources"/>

+      <import plugin="org.eclipse.ocl.pivot"/>

+      <import plugin="org.eclipse.ocl.xtext.essentialocl"/>

+      <import plugin="org.eclipse.ocl.pivot.uml"/>

+      <import plugin="org.eclipse.ocl.xtext.completeocl.ui"/>

+      <import plugin="org.eclipse.ocl.xtext.oclstdlib.ui"/>

+      <import plugin="org.eclipse.core.filesystem"/>

+      <import plugin="org.eclipse.debug.core"/>

+      <import plugin="org.eclipse.ui.console"/>

+      <import plugin="org.eclipse.ui.navigator"/>

+      <import plugin="org.eclipse.ui.forms"/>

+      <import plugin="org.eclipse.uml2.uml"/>

+      <import plugin="org.eclipse.ocl.examples.debug"/>

+      <import plugin="org.eclipse.ocl.examples.debug.vm.ui"/>

+      <import plugin="org.eclipse.ocl.examples.debug.vm"/>

+      <import plugin="org.eclipse.ocl.xtext.base"/>

+      <import plugin="org.eclipse.ocl.xtext.completeocl"/>

+      <import plugin="org.eclipse.ocl.xtext.oclinecore.ui"/>

+      <import plugin="org.eclipse.ui.ide"/>

+      <import plugin="org.eclipse.ocl.common.ui"/>

+      <import plugin="org.eclipse.ocl.xtext.markup.ui"/>

+      <import plugin="org.apache.xerces"/>

+      <import plugin="org.eclipse.emf.codegen"/>

+      <import plugin="org.eclipse.ocl.xtext.base"/>

+      <import plugin="org.eclipse.ocl.xtext.markup"/>

+      <import plugin="org.eclipse.ocl.xtext.base.ui"/>

+      <import plugin="org.eclipse.jdt.core"/>

+      <import plugin="org.eclipse.emf.ecore.editor"/>

+      <import plugin="org.eclipse.ocl.xtext.essentialocl.ui"/>

+      <import plugin="org.eclipse.ocl.xtext.oclinecore"/>

+      <import plugin="org.eclipse.ocl.examples.ui"/>

+      <import plugin="org.eclipse.ocl.xtext.oclstdlib"/>

+      <import plugin="org.eclipse.debug.ui"/>

+      <import plugin="org.eclipse.equinox.frameworkadmin.equinox"/>

+      <import plugin="org.eclipse.pde.core"/>

+      <import plugin="org.eclipse.core.expressions"/>

+      <import plugin="org.eclipse.core.runtime"/>

+      <import plugin="org.eclipse.core.resources"/>

+      <import plugin="org.eclipse.ocl.common"/>

+      <import plugin="org.eclipse.xtext.ui"/>

+      <import plugin="org.eclipse.xtext.ui.shared"/>

+      <import plugin="org.eclipse.core.expressions"/>

+      <import plugin="org.eclipse.ocl.xtext.essentialocl.ui"/>

+      <import plugin="org.eclipse.ocl.xtext.completeocl"/>

+      <import plugin="org.eclipse.ocl.xtext.oclinecore"/>

+      <import plugin="org.eclipse.ocl.xtext.oclstdlib"/>

+      <import plugin="org.eclipse.xtext.builder"/>

+      <import plugin="org.eclipse.ocl.examples.emf.validation.validity.ui"/>

+      <import plugin="org.eclipse.core.runtime"/>

+      <import plugin="org.eclipse.core.resources"/>

+      <import plugin="org.eclipse.wst.common.uriresolver"/>

+      <import plugin="org.eclipse.wst.sse.core"/>

+      <import plugin="org.eclipse.wst.common.core"/>

+      <import plugin="org.eclipse.osgi.services"/>

+      <import plugin="org.eclipse.core.runtime"/>

+      <import plugin="org.eclipse.core.resources"/>

+      <import plugin="org.eclipse.xtext"/>

+      <import plugin="org.eclipse.jdt.core"/>

+      <import plugin="org.eclipse.text"/>

+      <import plugin="org.eclipse.core.jobs"/>

+      <import plugin="org.eclipse.core.filebuffers"/>

+      <import plugin="org.eclipse.emf.common"/>

+      <import plugin="org.eclipse.core.filesystem"/>

+      <import plugin="org.eclipse.core.expressions"/>

+      <import plugin="org.eclipse.core.runtime"/>

+      <import plugin="org.eclipse.core.resources"/>

+      <import feature="org.eclipse.nebula.widgets.cdatetime.feature"/>

    </requires>

 

    <plugin

diff --git a/features/org.eclipse.efm.modeling.feature/feature.xml b/features/org.eclipse.efm.modeling.feature/feature.xml
index 0bb78ba..19764ab 100644
--- a/features/org.eclipse.efm.modeling.feature/feature.xml
+++ b/features/org.eclipse.efm.modeling.feature/feature.xml
@@ -30,15 +30,15 @@
          version="0.0.0"/>

 

    <requires>

-      <import plugin="org.eclipse.core.runtime" version="3.11.1" match="compatible"/>

-      <import plugin="org.eclipse.emf.ecore" version="2.11.2" match="compatible"/>

-      <import plugin="org.eclipse.uml2.uml.profile.standard" version="1.0.100" match="compatible"/>

-      <import plugin="org.eclipse.uml2.types" version="2.0.0" match="compatible"/>

-      <import plugin="org.eclipse.uml2.uml" version="5.1.0" match="compatible"/>

-      <import plugin="org.eclipse.uml2.uml.resources" version="5.1.0" match="compatible"/>

+      <import plugin="org.eclipse.core.runtime"/>

+      <import plugin="org.eclipse.emf.ecore"/>

+      <import plugin="org.eclipse.uml2.uml.profile.standard"/>

+      <import plugin="org.eclipse.uml2.types"/>

+      <import plugin="org.eclipse.uml2.uml"/>

+      <import plugin="org.eclipse.uml2.uml.resources"/>

       <import plugin="org.eclipse.xtext"/>

       <import plugin="org.eclipse.xtext.xbase"/>

-      <import plugin="org.eclipse.equinox.common" version="3.5.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.equinox.common"/>

       <import plugin="org.eclipse.uml2.codegen.ecore"/>

       <import plugin="org.eclipse.xtext.xbase.lib"/>

       <import plugin="org.antlr.runtime"/>

@@ -51,16 +51,16 @@
       <import plugin="org.eclipse.xtext.ui"/>

       <import plugin="org.eclipse.xtext.ui.shared"/>

       <import plugin="org.eclipse.xtext.ui.codetemplates.ui"/>

-      <import plugin="org.eclipse.ui.editors" version="3.5.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.ui.ide" version="3.5.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.ui.editors"/>

+      <import plugin="org.eclipse.ui.ide"/>

       <import plugin="org.eclipse.ui"/>

       <import plugin="org.eclipse.compare"/>

       <import plugin="org.eclipse.xtext.builder"/>

-      <import plugin="org.eclipse.papyrus.infra.core.log" version="1.1.3" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.papyrus.infra.core.log"/>

       <import plugin="org.eclipse.papyrus.uml.xtext.integration.ui"/>

       <import plugin="org.eclipse.papyrus.infra.emf"/>

-      <import plugin="org.eclipse.papyrus.infra.core" version="1.1.3" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.efm.formalml" version="0.0.1" match="compatible"/>

+      <import plugin="org.eclipse.papyrus.infra.core"/>

+      <import plugin="org.eclipse.efm.formalml"/>

       <import plugin="org.eclipse.core.resources"/>

       <import plugin="com.google.guava"/>

       <import plugin="org.eclipse.xtend.lib.macro"/>

@@ -74,36 +74,36 @@
       <import plugin="org.eclipse.papyrus.infra.types.core"/>

       <import plugin="org.eclipse.papyrus.views.properties"/>

       <import plugin="org.eclipse.papyrus.infra.newchild"/>

-      <import plugin="org.eclipse.uml2.uml" version="5.2.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.uml2.uml"/>

       <import plugin="org.eclipse.papyrus.infra.viewpoints.policy"/>

-      <import plugin="org.eclipse.efm.formalml.service.types" version="0.0.1" match="compatible"/>

-      <import plugin="org.eclipse.papyrus.uml.service.types" version="2.0.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.papyrus.uml.diagram.composite" version="2.0.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.efm.formalml.service.types"/>

+      <import plugin="org.eclipse.papyrus.uml.service.types"/>

+      <import plugin="org.eclipse.papyrus.uml.diagram.composite"/>

       <import plugin="org.eclipse.gmf.runtime.diagram.core"/>

       <import plugin="org.eclipse.gmf.runtime.notation"/>

       <import plugin="org.eclipse.papyrus.uml.diagram.clazz"/>

-      <import plugin="org.eclipse.papyrus.uml.diagram.statemachine" version="2.0.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.papyrus.uml.diagram.statemachine"/>

       <import plugin="org.eclipse.papyrus.uml.tools"/>

       <import plugin="org.eclipse.uml2.common"/>

-      <import plugin="org.eclipse.papyrus.uml.diagram.common" version="2.0.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.papyrus.uml.diagram.common"/>

       <import plugin="org.eclipse.papyrus.infra.properties"/>

-      <import plugin="org.eclipse.papyrus.uml.xtext.integration.ui" version="1.1.3" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.papyrus.uml.xtext.integration.ui"/>

       <import plugin="org.eclipse.papyrus.uml.tools.utils"/>

-      <import plugin="org.eclipse.xtext.ui" version="2.9.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.gmf.runtime.diagram.ui.properties" version="1.7.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.papyrus.infra.emf" version="1.1.3" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.efm.formalml.xtext.ui" version="0.0.1" match="compatible"/>

-      <import plugin="org.eclipse.efm.modeling.codegen.xlia" version="0.0.1" match="compatible"/>

-      <import plugin="org.eclipse.efm.ui" version="0.0.1" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.emf.common.ui" version="2.10.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.emf.edit" version="2.12.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.xtext.ui"/>

+      <import plugin="org.eclipse.gmf.runtime.diagram.ui.properties"/>

+      <import plugin="org.eclipse.papyrus.infra.emf"/>

+      <import plugin="org.eclipse.efm.formalml.xtext.ui"/>

+      <import plugin="org.eclipse.efm.modeling.codegen.xlia"/>

+      <import plugin="org.eclipse.efm.ui"/>

+      <import plugin="org.eclipse.emf.common.ui"/>

+      <import plugin="org.eclipse.emf.edit"/>

       <import plugin="org.eclipse.emf.transaction"/>

       <import plugin="org.eclipse.papyrus.infra.ui"/>

       <import plugin="org.eclipse.papyrus.uml.extensionpoints"/>

-      <import feature="org.eclipse.papyrus.designer.languages.common.feature" version="1.0.4"/>

-      <import feature="org.eclipse.papyrus.sdk.feature" version="3.1.0.201709130748"/>

-      <import feature="org.eclipse.efm.modeling.textual.feature" version="0.0.1.qualifier"/>

-      <import feature="org.eclipse.efm.modeling.dependencies.feature" version="0.0.1.qualifier"/>

+      <import feature="org.eclipse.papyrus.designer.languages.common.feature"/>

+      <import feature="org.eclipse.papyrus.sdk.feature"/>

+      <import feature="org.eclipse.efm.modeling.textual.feature"/>

+      <import feature="org.eclipse.efm.modeling.dependencies.feature"/>

    </requires>

 

    <plugin

diff --git a/features/org.eclipse.efm.modeling.textual.dependencies.feature/feature.xml b/features/org.eclipse.efm.modeling.textual.dependencies.feature/feature.xml
index e1d3048..e56c72c 100644
--- a/features/org.eclipse.efm.modeling.textual.dependencies.feature/feature.xml
+++ b/features/org.eclipse.efm.modeling.textual.dependencies.feature/feature.xml
@@ -85,7 +85,7 @@
       <import plugin="org.eclipse.xtext.xbase.lib"/>

       <import plugin="org.eclipse.emf.ecore"/>

       <import plugin="org.eclipse.core.runtime"/>

-      <import plugin="org.eclipse.emf.mwe2.runtime" version="2.9.1" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.emf.mwe2.runtime"/>

       <import plugin="org.eclipse.emf.ecore.xmi"/>

       <import plugin="org.eclipse.jdt.debug.ui"/>

       <import plugin="org.eclipse.jdt.launching"/>

@@ -97,20 +97,20 @@
       <import plugin="org.eclipse.ui.editors"/>

       <import plugin="org.eclipse.ui.ide"/>

       <import plugin="org.eclipse.core.expressions"/>

-      <import plugin="org.apache.commons.lang" version="2.0.0" match="compatible"/>

-      <import plugin="org.apache.commons.logging" version="1.0.0" match="compatible"/>

+      <import plugin="org.apache.commons.lang"/>

+      <import plugin="org.apache.commons.logging"/>

       <import plugin="org.antlr.runtime" match="perfect"/>

       <import plugin="org.eclipse.emf.common"/>

       <import plugin="org.eclipse.xtext"/>

       <import plugin="org.eclipse.xtext.builder.standalone"/>

-      <import feature="net.sourceforge.plantuml.feature" version="1.1.20"/>

-      <import feature="net.sourceforge.plantuml.lib.feature" version="1.2018.9"/>

-      <import feature="org.eclipse.gef.dot" version="5.0.100.201805280201"/>

-      <import feature="org.eclipse.gef.dot.ui" version="5.0.100.201805280201"/>

-      <import feature="org.eclipse.gef.dot.user" version="5.0.100.201805280201"/>

-      <import feature="org.eclipse.gef.fx" version="5.0.1.201805280201"/>

-      <import feature="org.eclipse.gef.fx.jface" version="5.0.2.201805280201"/>

-      <import feature="org.eclipse.gef.fx.swt" version="5.0.2.201805280201"/>

+      <import feature="net.sourceforge.plantuml.feature"/>

+      <import feature="net.sourceforge.plantuml.lib.feature"/>

+      <import feature="org.eclipse.gef.dot"/>

+      <import feature="org.eclipse.gef.dot.ui"/>

+      <import feature="org.eclipse.gef.dot.user"/>

+      <import feature="org.eclipse.gef.fx"/>

+      <import feature="org.eclipse.gef.fx.jface"/>

+      <import feature="org.eclipse.gef.fx.swt"/>

    </requires>

 

    <plugin

diff --git a/features/org.eclipse.efm.modeling.textual.feature/feature.xml b/features/org.eclipse.efm.modeling.textual.feature/feature.xml
index 9900268..5918cd2 100644
--- a/features/org.eclipse.efm.modeling.textual.feature/feature.xml
+++ b/features/org.eclipse.efm.modeling.textual.feature/feature.xml
@@ -26,16 +26,16 @@
          version="0.0.0"/>

 

    <requires>

-      <import feature="org.eclipse.xtext.xbase.lib" version="2.12.0.v20170518-0758"/>

-      <import feature="org.eclipse.xtext.ui" version="2.10.0.v201605250459"/>

-      <import feature="org.eclipse.xtext.ui" version="2.10.0.v201605250459"/>

-      <import feature="org.eclipse.platform" version="4.6.2.v20161124-1529"/>

-      <import feature="org.eclipse.xtext.runtime" version="2.12.0.v20170519-1412"/>

-      <import feature="org.eclipse.xtend" version="2.2.0.v201605260315"/>

-      <import feature="org.eclipse.xtext.xbase.lib" version="2.12.0.v20170518-0758"/>

-      <import feature="org.eclipse.xtend.ui" version="2.2.0.v201605260315"/>

-      <import feature="org.eclipse.emf.mwe2.runtime.sdk" version="2.9.1.201705291011"/>

-      <import feature="org.eclipse.efm.modeling.textual.dependencies.feature" version="0.0.1.qualifier"/>

+      <import feature="org.eclipse.xtext.xbase.lib"/>

+      <import feature="org.eclipse.xtext.ui"/>

+      <import feature="org.eclipse.xtext.ui"/>

+      <import feature="org.eclipse.platform"/>

+      <import feature="org.eclipse.xtext.runtime"/>

+      <import feature="org.eclipse.xtend"/>

+      <import feature="org.eclipse.xtext.xbase.lib"/>

+      <import feature="org.eclipse.xtend.ui"/>

+      <import feature="org.eclipse.emf.mwe2.runtime.sdk"/>

+      <import feature="org.eclipse.efm.modeling.textual.dependencies.feature"/>

       <import plugin="org.eclipse.ui"/>

       <import plugin="org.eclipse.core.runtime"/>

       <import plugin="org.eclipse.emf.ecore"/>

@@ -51,11 +51,11 @@
       <import plugin="org.eclipse.xtext.xbase.ide"/>

       <import plugin="org.eclipse.xtext.ui.shared"/>

       <import plugin="org.eclipse.xtext.ui.codetemplates.ui"/>

-      <import plugin="org.eclipse.ui.editors" version="3.5.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.ui.ide" version="3.5.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.ui.editors"/>

+      <import plugin="org.eclipse.ui.ide"/>

       <import plugin="org.eclipse.compare"/>

       <import plugin="org.eclipse.xtext.builder"/>

-      <import plugin="org.eclipse.equinox.common" version="3.5.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.equinox.common"/>

       <import plugin="org.eclipse.ui.console"/>

       <import plugin="org.eclipse.debug.core"/>

       <import plugin="org.eclipse.emf.mwe.utils"/>

@@ -74,11 +74,11 @@
       <import plugin="org.eclipse.ui.views"/>

       <import plugin="org.eclipse.jface.text"/>

       <import plugin="org.eclipse.ui.views.properties.tabbed"/>

-      <import plugin="org.eclipse.core.runtime" version="3.12.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.core.runtime"/>

       <import plugin="org.eclipse.emf.common.ui"/>

       <import plugin="org.eclipse.ui.intro"/>

       <import plugin="org.eclipse.ui.intro.quicklinks"/>

-      <import plugin="org.eclipse.ui.cheatsheets" version="3.5.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.ui.cheatsheets"/>

    </requires>

 

    <plugin

@@ -235,4 +235,11 @@
          version="0.0.0"

          unpack="false"/>

 

+   <plugin

+         id="org.eclipse.efm.formalml.plantuml"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

 </feature>

diff --git a/gui/org.eclipse.efm.editing.ui/.classpath b/gui/org.eclipse.efm.editing.ui/.classpath
index b862a29..ca3785c 100644
--- a/gui/org.eclipse.efm.editing.ui/.classpath
+++ b/gui/org.eclipse.efm.editing.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/gui/org.eclipse.efm.editing.ui/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.editing.ui/META-INF/MANIFEST.MF
index e0a9877..1582330 100644
--- a/gui/org.eclipse.efm.editing.ui/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.editing.ui/META-INF/MANIFEST.MF
@@ -7,5 +7,5 @@
 Bundle-Vendor: %pluginVendor
 Require-Bundle: org.eclipse.ui,

  org.eclipse.core.runtime
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject.examples/.classpath b/gui/org.eclipse.efm.modeling.ui.newproject.examples/.classpath
index 43b9862..1db08c6 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject.examples/.classpath
+++ b/gui/org.eclipse.efm.modeling.ui.newproject.examples/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="target/classes"/>
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject.examples/.settings/org.eclipse.jdt.core.prefs b/gui/org.eclipse.efm.modeling.ui.newproject.examples/.settings/org.eclipse.jdt.core.prefs
index a698e59..a58ebdc 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject.examples/.settings/org.eclipse.jdt.core.prefs
+++ b/gui/org.eclipse.efm.modeling.ui.newproject.examples/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,15 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject.examples/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.modeling.ui.newproject.examples/META-INF/MANIFEST.MF
index 71b9d85..59cb0f2 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject.examples/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.modeling.ui.newproject.examples/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-SymbolicName: org.eclipse.efm.modeling.ui.newproject.examples;singleton:=true
 Bundle-Version: 0.0.1.qualifier
 Bundle-Vendor: CEA - LIST
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.ui,
  org.eclipse.emf.common.ui,
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject.templates/.classpath b/gui/org.eclipse.efm.modeling.ui.newproject.templates/.classpath
index 43b9862..ce9e006 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject.templates/.classpath
+++ b/gui/org.eclipse.efm.modeling.ui.newproject.templates/.classpath
@@ -1,7 +1,11 @@
-<?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.8"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

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

+		<attributes>

+			<attribute name="module" value="true"/>

+		</attributes>

+	</classpathentry>

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

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

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/gui/org.eclipse.efm.modeling.ui.newproject.templates/.settings/org.eclipse.jdt.core.prefs b/gui/org.eclipse.efm.modeling.ui.newproject.templates/.settings/org.eclipse.jdt.core.prefs
index a698e59..a58ebdc 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject.templates/.settings/org.eclipse.jdt.core.prefs
+++ b/gui/org.eclipse.efm.modeling.ui.newproject.templates/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,15 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject.templates/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.modeling.ui.newproject.templates/META-INF/MANIFEST.MF
index e225dac..a5b38e6 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject.templates/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.modeling.ui.newproject.templates/META-INF/MANIFEST.MF
@@ -9,8 +9,10 @@
  org.eclipse.uml2.uml,
  org.eclipse.papyrus.uml.diagram.common;bundle-version="2.0.0",
  org.eclipse.efm.ui,
- org.eclipse.papyrus.infra.architecture;bundle-version="2.0.0"
+ org.eclipse.papyrus.infra.architecture;bundle-version="2.0.0",
+ org.eclipse.papyrus.infra.core;bundle-version="4.1.0"
 Export-Package: org.eclipse.efm.modeling.ui.newproject.templates
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.efm.modeling.ui.newproject.templates
+Import-Package: org.eclipse.papyrus.uml.tools.utils
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject/.classpath b/gui/org.eclipse.efm.modeling.ui.newproject/.classpath
index 43b9862..1db08c6 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject/.classpath
+++ b/gui/org.eclipse.efm.modeling.ui.newproject/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="target/classes"/>
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject/.settings/org.eclipse.jdt.core.prefs b/gui/org.eclipse.efm.modeling.ui.newproject/.settings/org.eclipse.jdt.core.prefs
index a698e59..a58ebdc 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject/.settings/org.eclipse.jdt.core.prefs
+++ b/gui/org.eclipse.efm.modeling.ui.newproject/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,15 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/gui/org.eclipse.efm.modeling.ui.newproject/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.modeling.ui.newproject/META-INF/MANIFEST.MF
index 2330aa0..6ccbfb8 100644
--- a/gui/org.eclipse.efm.modeling.ui.newproject/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.modeling.ui.newproject/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
  org.eclipse.emf.common.ui;bundle-version="2.10.0",
  org.eclipse.emf.edit;bundle-version="2.12.0",
  org.eclipse.efm.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.emf.common,
  org.eclipse.emf.common.util,
diff --git a/gui/org.eclipse.efm.modeling.ui.views.common/.classpath b/gui/org.eclipse.efm.modeling.ui.views.common/.classpath
index 43b9862..1db08c6 100644
--- a/gui/org.eclipse.efm.modeling.ui.views.common/.classpath
+++ b/gui/org.eclipse.efm.modeling.ui.views.common/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="target/classes"/>
diff --git a/gui/org.eclipse.efm.modeling.ui.views.common/.settings/org.eclipse.jdt.core.prefs b/gui/org.eclipse.efm.modeling.ui.views.common/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/gui/org.eclipse.efm.modeling.ui.views.common/.settings/org.eclipse.jdt.core.prefs
+++ b/gui/org.eclipse.efm.modeling.ui.views.common/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/gui/org.eclipse.efm.modeling.ui.views.common/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.modeling.ui.views.common/META-INF/MANIFEST.MF
index 4d7b7ca..d660953 100644
--- a/gui/org.eclipse.efm.modeling.ui.views.common/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.modeling.ui.views.common/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: Common
 Bundle-SymbolicName: org.eclipse.efm.modeling.ui.views.common;singleton:=true
 Bundle-Version: 0.0.1.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Require-Bundle: org.eclipse.papyrus.infra.newchild,
  org.eclipse.papyrus.infra.properties,
  org.eclipse.efm.formalml;bundle-version="[0.0.1,1.0.0)",
diff --git a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.classpath b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.classpath
index cf36b56..bc57d23 100644
--- a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.classpath
+++ b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src/"/>
 	<classpathentry kind="output" path="target/classes"/>
diff --git a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.settings/org.eclipse.jdt.core.prefs b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.settings/org.eclipse.jdt.core.prefs
index 295926d..11265a3 100644
--- a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.settings/org.eclipse.jdt.core.prefs
+++ b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

-org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11

+org.eclipse.jdt.core.compiler.compliance=11

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

-org.eclipse.jdt.core.compiler.source=1.8

+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning

+org.eclipse.jdt.core.compiler.release=enabled

+org.eclipse.jdt.core.compiler.source=11

diff --git a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/META-INF/MANIFEST.MF
index 95d18dc..48f1192 100644
--- a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/META-INF/MANIFEST.MF
@@ -13,10 +13,13 @@
  org.eclipse.efm.formalml.xtext.ui;bundle-version="[0.0.1,1.0.0)",

  org.eclipse.efm.modeling.codegen.xlia;bundle-version="[0.0.1,1.0.0)",

  org.eclipse.efm.formalml;bundle-version="[0.0.1,1.0.0)",

- org.eclipse.efm.ui;bundle-version="0.0.1"

+ org.eclipse.efm.ui;bundle-version="0.0.1",

+ org.eclipse.papyrus.uml.xtext.integration.core;bundle-version="3.0.0"

 Bundle-ActivationPolicy: lazy

 Bundle-Activator: org.eclipse.efm.papyrus.view.property.concretesyntax.ActivatorXLIAProperties

 Bundle-ManifestVersion: 2

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-11

 Bundle-Vendor: Eclipse Modeling Project

 Automatic-Module-Name: org.eclipse.efm.modeling.ui.views.property.tab.xlia

+Import-Package: org.eclipse.papyrus.infra.core.services,

+ org.eclipse.papyrus.infra.core.utils

diff --git a/gui/org.eclipse.efm.modeling.ui/.classpath b/gui/org.eclipse.efm.modeling.ui/.classpath
index b862a29..ca3785c 100644
--- a/gui/org.eclipse.efm.modeling.ui/.classpath
+++ b/gui/org.eclipse.efm.modeling.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/gui/org.eclipse.efm.modeling.ui/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.modeling.ui/META-INF/MANIFEST.MF
index 4c788a6..a71a78a 100644
--- a/gui/org.eclipse.efm.modeling.ui/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.modeling.ui/META-INF/MANIFEST.MF
@@ -7,5 +7,5 @@
 Bundle-Vendor: %pluginVendor
 Require-Bundle: org.eclipse.ui,

  org.eclipse.core.runtime
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
diff --git a/gui/org.eclipse.efm.ui.intro/.classpath b/gui/org.eclipse.efm.ui.intro/.classpath
index b862a29..ca3785c 100644
--- a/gui/org.eclipse.efm.ui.intro/.classpath
+++ b/gui/org.eclipse.efm.ui.intro/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/gui/org.eclipse.efm.ui.intro/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.ui.intro/META-INF/MANIFEST.MF
index 684ccf1..cd0cde1 100644
--- a/gui/org.eclipse.efm.ui.intro/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.ui.intro/META-INF/MANIFEST.MF
@@ -10,5 +10,5 @@
  org.eclipse.ui.intro,
  org.eclipse.ui.intro.quicklinks,
  org.eclipse.efm.modeling.doc.helpcontents
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
diff --git a/gui/org.eclipse.efm.ui/.classpath b/gui/org.eclipse.efm.ui/.classpath
index 54f561c..f656d57 100644
--- a/gui/org.eclipse.efm.ui/.classpath
+++ b/gui/org.eclipse.efm.ui/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

 	<classpathentry kind="output" path="target/classes"/>

diff --git a/gui/org.eclipse.efm.ui/.settings/org.eclipse.jdt.core.prefs b/gui/org.eclipse.efm.ui/.settings/org.eclipse.jdt.core.prefs
index 0c68a61..7adc0fb 100644
--- a/gui/org.eclipse.efm.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/gui/org.eclipse.efm.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/gui/org.eclipse.efm.ui/META-INF/MANIFEST.MF b/gui/org.eclipse.efm.ui/META-INF/MANIFEST.MF
index a9c3d41..9034f10 100644
--- a/gui/org.eclipse.efm.ui/META-INF/MANIFEST.MF
+++ b/gui/org.eclipse.efm.ui/META-INF/MANIFEST.MF
@@ -8,7 +8,7 @@
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.ui.console
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.efm.ui,
  org.eclipse.efm.ui.utils
diff --git a/releng/org.eclipse.efm.modeling.product/efm-modeling.papyrus.product b/releng/org.eclipse.efm.modeling.product/efm-modeling.papyrus.product
index 6dd8889..12f28e7 100644
--- a/releng/org.eclipse.efm.modeling.product/efm-modeling.papyrus.product
+++ b/releng/org.eclipse.efm.modeling.product/efm-modeling.papyrus.product
@@ -43,7 +43,7 @@
    </launcher>

 

    <vm>

-      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>

+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>

    </vm>

 

    <license>

@@ -313,6 +313,7 @@
       <feature id="org.eclipse.emf.databinding" installMode="root"/>

       <feature id="org.eclipse.gef.dot" installMode="root"/>

       <feature id="org.eclipse.efm.modeling.textual.feature" installMode="root"/>

+      <feature id="org.eclipse.jgit.http.apache" installMode="root"/>

    </features>

 

    <configurations>

@@ -323,9 +324,9 @@
       <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />

       <plugin id="org.eclipse.update.configurator" autoStart="false" startLevel="3" />

       <property name="file.encoding" value="UTF-8" />

-      <property name="org.eclipse.update.reconcile" value="false" />

-      <property name="osgi.bundles.defaultStartLevel" value="4" />

       <property name="osgi.instance.area.default" value="../workspace-efm" />

+      <property name="osgi.bundles.defaultStartLevel" value="4" />

+      <property name="org.eclipse.update.reconcile" value="false" />

       <property name="osgi.requiredJavaVersion" value="1.8" />

    </configurations>

 

diff --git a/releng/org.eclipse.efm.modeling.product/efm-modeling.textual.product b/releng/org.eclipse.efm.modeling.product/efm-modeling.textual.product
index 4cf53ee..3014591 100644
--- a/releng/org.eclipse.efm.modeling.product/efm-modeling.textual.product
+++ b/releng/org.eclipse.efm.modeling.product/efm-modeling.textual.product
@@ -41,9 +41,8 @@
       </win>

    </launcher>

 

-

    <vm>

-      <windows include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>

+      <windows include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>

    </vm>

 

    <license>

@@ -272,6 +271,7 @@
       <feature id="org.eclipse.xtext.runtime" installMode="root"/>

       <feature id="org.eclipse.emf.edit" installMode="root"/>

       <feature id="org.eclipse.xtext.xbase" installMode="root"/>

+      <feature id="org.eclipse.jgit.http.apache" installMode="root"/>

       <feature id="org.eclipse.emf.codegen.ecore" installMode="root"/>

       <feature id="org.eclipse.emf.converter" installMode="root"/>

       <feature id="org.eclipse.xtend.typesystem.emf" installMode="root"/>

@@ -282,6 +282,7 @@
       <feature id="org.eclipse.ecf.filetransfer.feature" installMode="root"/>

       <feature id="org.eclipse.xtext.ui" installMode="root"/>

       <feature id="org.eclipse.xtend.dependencies" installMode="root"/>

+      <feature id="org.eclipse.jgit.gpg.bc" installMode="root"/>

       <feature id="net.sourceforge.plantuml.feature" installMode="root"/>

       <feature id="org.eclipse.gef.fx.swt" installMode="root"/>

       <feature id="org.eclipse.xtend.ui" installMode="root"/>

@@ -322,20 +323,20 @@
       <plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />

       <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />

       <plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" />

-      <property name="file.encoding" value="UTF-8" />

-      <property name="org.eclipse.efm.executable.diversity.default" value="../bin/diversity.exe" />

-      <property name="org.eclipse.efm.executable.graphviz.default" value="../bin/zgrviewer-0.10.0/run.bat" />

-      <property name="org.eclipse.update.reconcile" value="false" />

       <property name="osgi.bundles.defaultStartLevel" value="4" />

-      <property name="osgi.framework.extension" value="org.eclipse.fx.osgi" />

-      <property name="osgi.instance.area.default" value="../workspace" />

+      <property name="org.eclipse.update.reconcile" value="false" />

+      <property name="org.eclipse.efm.executable.diversity.default" value="../bin/diversity.exe" />

       <property name="osgi.requiredJavaVersion" value="1.8" />

+      <property name="osgi.instance.area.default" value="../workspace" />

+      <property name="osgi.framework.extension" value="org.eclipse.fx.osgi" />

+      <property name="org.eclipse.efm.executable.graphviz.default" value="../bin/zgrviewer-0.10.0/run.bat" />

+      <property name="file.encoding" value="UTF-8" />

    </configurations>

 

    <repositories>

       <repository location="http://download.eclipse.org/modeling/mdt/papyrus/components/designer" enabled="true" />

-      <repository location="http://download.eclipse.org/releases/2019-06/" enabled="true" />

-      <repository location="http://https://download.eclipse.org/modeling/mdt/papyrus/updates/releases/2019-06/" enabled="true" />

+      <repository location="http://download.eclipse.org/releases/2020-03/" enabled="true" />

+      <repository location="http://https://download.eclipse.org/modeling/mdt/papyrus/updates/releases/2020-03/" enabled="true" />

    </repositories>

 

    <preferencesInfo>

diff --git a/releng/org.eclipse.efm.modeling.product/pom.xml-textual b/releng/org.eclipse.efm.modeling.product/pom.xml-textual
index 220fc93..ee1de63 100644
--- a/releng/org.eclipse.efm.modeling.product/pom.xml-textual
+++ b/releng/org.eclipse.efm.modeling.product/pom.xml-textual
@@ -27,7 +27,7 @@
 				<groupId>org.eclipse.tycho</groupId>
 				<artifactId>tycho-p2-director-plugin</artifactId>
 				<configuration>
-					<profile>org.eclipse.efm.modeling</profile>
+					<profile>org.eclipse.efm.tooling</profile>
 					<formats>
 						<linux>zip</linux>
 						<macosx>tar.gz</macosx>
diff --git a/releng/org.eclipse.efm.modeling.rcp/.classpath b/releng/org.eclipse.efm.modeling.rcp/.classpath
index 323b07b..cbd391f 100644
--- a/releng/org.eclipse.efm.modeling.rcp/.classpath
+++ b/releng/org.eclipse.efm.modeling.rcp/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/releng/org.eclipse.efm.modeling.rcp/.settings/org.eclipse.jdt.core.prefs b/releng/org.eclipse.efm.modeling.rcp/.settings/org.eclipse.jdt.core.prefs
index 0c68a61..7adc0fb 100644
--- a/releng/org.eclipse.efm.modeling.rcp/.settings/org.eclipse.jdt.core.prefs
+++ b/releng/org.eclipse.efm.modeling.rcp/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,10 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/releng/org.eclipse.efm.modeling.rcp/META-INF/MANIFEST.MF b/releng/org.eclipse.efm.modeling.rcp/META-INF/MANIFEST.MF
index e97cd7c..09fcd81 100644
--- a/releng/org.eclipse.efm.modeling.rcp/META-INF/MANIFEST.MF
+++ b/releng/org.eclipse.efm.modeling.rcp/META-INF/MANIFEST.MF
@@ -6,6 +6,6 @@
 Bundle-Vendor: %pluginProvider
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Require-Bundle: org.eclipse.e4.ui.css.swt.theme;bundle-version="[0.10.0,1.0.0)"
 Eclipse-BundleShape: dir
diff --git a/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/.project b/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/.project
index d15b6b8..044523d 100644
--- a/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/.project
+++ b/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/.project
@@ -6,6 +6,11 @@
 	</projects>
 	<buildSpec>
 		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
 			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
@@ -13,5 +18,6 @@
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 	</natures>
 </projectDescription>
diff --git a/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.target b/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.target
index 52367b2..efbd01f 100644
--- a/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.target
+++ b/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.target
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>

 <?pde?>

-<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->

-<target name="Eclipse Formal Modeling Papyrus last-release" sequenceNumber="1570521255">

+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->

+<target name="Eclipse Formal Modeling Papyrus last-release" sequenceNumber="1620776854">

   <locations>

     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">

       <unit id="org.eclipse.cdt.core" version="0.0.0"/>

-      <unit id="org.eclipse.ecf.filetransfer.httpclient45.feature.feature.group" version="1.0.0.v20190530-1947"/>

+      <unit id="org.eclipse.ecf.filetransfer.httpclient45.feature.feature.group" version="1.0.702.v20201025-2303"/>

       <unit id="org.eclipse.egit.feature.group" version="0.0.0"/>

       <unit id="org.eclipse.emf.feature.group" version="0.0.0"/>

       <unit id="org.eclipse.emf.source.feature.group" version="0.0.0"/>

@@ -30,6 +30,7 @@
       <unit id="org.eclipse.gmf.feature.group" version="0.0.0"/>

       <unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>

       <unit id="org.eclipse.jdt.source.feature.group" version="0.0.0"/>

+      <unit id="org.eclipse.jgit.ssh.jsch.feature.group" version="0.0.0"/>

       <unit id="org.eclipse.json" version="0.0.0"/>

       <unit id="org.eclipse.m2m.qvt.oml.sdk.feature.group" version="0.0.0"/>

       <unit id="org.eclipse.m2m.qvt.oml.emf.util" version="0.0.0"/>

@@ -68,17 +69,13 @@
       <unit id="org.eclipse.wst.common.core" version="0.0.0"/>

       <unit id="org.eclipse.wst.sse.core" version="0.0.0"/>

       <unit id="org.eclipse.wst.xml.core" version="0.0.0"/>

-      <repository id="eclipse-2019-09" location="http://download.eclipse.org/releases/2019-09"/>

+      <repository id="eclipse-2021-03" location="http://download.eclipse.org/releases/2021-03"/>

     </location>

     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">

       <unit id="org.eclipse.papyrus.marte.core.feature.feature.group" version="0.0.0"/>

       <repository id="Papyrus-Marte" location="http://download.eclipse.org/modeling/mdt/papyrus/components/marte"/>

     </location>

     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">

-      <unit id="org.eclipse.papyrus.moka.feature.feature.group" version="0.0.0"/>

-      <repository id="Papyrus-Moka-Master" location="https://hudson.eclipse.org/papyrus/view/Moka/job/papyrus-moka-master/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.moka.p2/target/repository"/>

-    </location>

-    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">

       <unit id="org.eclipse.papyrus.designer.languages.common.feature.feature.group" version="0.0.0"/>

       <unit id="org.eclipse.papyrus.designer.deployment.tools" version="0.0.0"/>

       <unit id="org.eclipse.papyrus.designer.transformation.base" version="0.0.0"/>

@@ -86,6 +83,9 @@
     </location>

     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">

       <unit id="net.sourceforge.plantuml.feature.feature.group" version="0.0.0"/>

+      <unit id="net.sourceforge.plantuml.feature.source.feature.group" version="0.0.0"/>

+      <unit id="net.sourceforge.plantuml.ecore.feature.feature.group" version="0.0.0"/>

+      <unit id="net.sourceforge.plantuml.ecore.feature.source.feature.group" version="0.0.0"/>

       <unit id="net.sourceforge.plantuml.lib.feature.feature.group" version="0.0.0"/>

       <repository id="PlantUML" location="http://hallvard.github.io/plantuml"/>

     </location>

@@ -94,17 +94,17 @@
       <repository id="Eclipse-Nebula" location="http://download.eclipse.org/nebula/releases/latest"/>

     </location>

     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">

-      <unit id="com.google.guava" version="27.1.0.v20190517-1946"/>

-      <unit id="com.google.guava.source" version="27.1.0.v20190517-1946"/>

-      <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>

-      <unit id="com.google.gson.source" version="2.8.2.v20180104-1110"/>

-      <unit id="com.google.inject.multibindings" version="3.0.0.v201605172100"/>

-      <unit id="com.google.inject.multibindings.source" version="3.0.0.v201605172100"/>

-      <unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>

-      <unit id="org.apache.commons.lang3.source" version="3.1.0.v201403281430"/>

-      <unit id="org.objectweb.asm" version="7.1.0.v20190412-2143"/>

-      <unit id="org.objectweb.asm.source" version="7.1.0.v20190412-2143"/>

-      <repository id="orbit" location="https://download.eclipse.org/tools/orbit/downloads/drops/R20190827152740/repository"/>

+      <unit id="com.google.guava" version="0.0.0"/>

+      <unit id="com.google.guava.source" version="0.0.0"/>

+      <unit id="com.google.gson" version="0.0.0"/>

+      <unit id="com.google.gson.source" version="0.0.0"/>

+      <unit id="com.google.inject.multibindings" version="0.0.0"/>

+      <unit id="com.google.inject.multibindings.source" version="0.0.0"/>

+      <unit id="org.apache.commons.lang3" version="0.0.0"/>

+      <unit id="org.apache.commons.lang3.source" version="0.0.0"/>

+      <unit id="org.objectweb.asm" version="0.0.0"/>

+      <unit id="org.objectweb.asm.source" version="0.0.0"/>

+      <repository id="orbit" location="https://download.eclipse.org/tools/orbit/downloads/drops/R20210223232630/repository"/>

     </location>

   </locations>

 </target>

diff --git a/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.tpd b/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.tpd
index f951e12..1baab0c 100644
--- a/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.tpd
+++ b/targetplatform/org.eclipse.efm.modeling.targetplatform.last-release-papyrus/org.eclipse.efm.modeling.targetplatform.last-release-papyrus.tpd
@@ -3,7 +3,7 @@
 with source requirements
 
 //location "http://download.eclipse.org/releases/latest/" eclipse-latest {
-location "http://download.eclipse.org/releases/2019-09" eclipse-2019-09 {
+location "http://download.eclipse.org/releases/2021-03" eclipse-2021-03 {
  org.eclipse.cdt.core lazy
  
  org.eclipse.ecf.filetransfer.httpclient45.feature.feature.group
@@ -38,6 +38,8 @@
  org.eclipse.jdt.feature.group lazy
  org.eclipse.jdt.source.feature.group lazy
  
+ org.eclipse.jgit.ssh.jsch.feature.group lazy
+ 
  org.eclipse.json lazy
  
  org.eclipse.m2m.qvt.oml.sdk.feature.group lazy
@@ -54,7 +56,7 @@
  org.eclipse.papyrus.infra.viewpoints.policy lazy
  org.eclipse.papyrus.sdk.feature.feature.group lazy
 // org.eclipse.papyrus.views.properties.model.xwt lazy
- 
+
  org.eclipse.platform.feature.group lazy
  org.eclipse.rcp.feature.group lazy
 // org.eclipse.uml2.codegen.ecore lazy
@@ -103,11 +105,11 @@
 // org.eclipse.papyrus.marte.static.profile lazy
 }
 
-//location "http://download.eclipse.org/modeling/mdt/papyrus/components/moka" Papyrus-Moka {
-location "https://hudson.eclipse.org/papyrus/view/Moka/job/papyrus-moka-master/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.moka.p2/target/repository" Papyrus-Moka-Master {
- org.eclipse.papyrus.moka.feature.feature.group lazy
-// org.eclipse.papyrus.moka.simex lazy
-}
+////location "http://download.eclipse.org/modeling/mdt/papyrus/components/moka" Papyrus-Moka {
+//location "https://hudson.eclipse.org/papyrus/view/Moka/job/papyrus-moka-master/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.moka.p2/target/repository" Papyrus-Moka-Master {
+// org.eclipse.papyrus.moka.feature.feature.group lazy
+//// org.eclipse.papyrus.moka.simex lazy
+//}
 
 location "http://download.eclipse.org/modeling/mdt/papyrus/components/designer" Papyrus-Designer {
  org.eclipse.papyrus.designer.languages.common.feature.feature.group lazy
@@ -117,6 +119,9 @@
 
 location "http://hallvard.github.io/plantuml" PlantUML {
  net.sourceforge.plantuml.feature.feature.group  lazy
+ net.sourceforge.plantuml.feature.source.feature.group lazy
+ net.sourceforge.plantuml.ecore.feature.feature.group  lazy
+ net.sourceforge.plantuml.ecore.feature.source.feature.group lazy
  net.sourceforge.plantuml.lib.feature.feature.group lazy
 }
 
@@ -151,17 +156,20 @@
 
 //location orbit "https://download.eclipse.org/tools/orbit/downloads/drops/S20190129210011/repository" {
 //location orbit "https://download.eclipse.org/tools/orbit/downloads/drops/R20190602212107/repository" {
-location orbit "https://download.eclipse.org/tools/orbit/downloads/drops/R20190827152740/repository" {
-	com.google.guava //[21.0.0,22.0.0)
-	com.google.guava.source
- 	com.google.gson
-	com.google.gson.source
-	com.google.inject.multibindings
-	com.google.inject.multibindings.source
- 	org.apache.commons.lang3
-	org.apache.commons.lang3.source
- 	org.objectweb.asm
-	org.objectweb.asm.source
+//location orbit "https://download.eclipse.org/tools/orbit/downloads/drops/R20190827152740/repository" {
+//location orbit "https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository" {
+//location orbit "https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository" {
+location orbit "https://download.eclipse.org/tools/orbit/downloads/drops/R20210223232630/repository" {
+	com.google.guava lazy //[21.0.0,22.0.0)
+	com.google.guava.source lazy
+ 	com.google.gson lazy
+	com.google.gson.source lazy
+	com.google.inject.multibindings lazy
+	com.google.inject.multibindings.source lazy
+ 	org.apache.commons.lang3 lazy
+	org.apache.commons.lang3.source lazy
+ 	org.objectweb.asm lazy
+	org.objectweb.asm.source lazy
 	
 //	com.google.guava 21.0.0
 //	com.google.guava.source 21.0.0
@@ -174,10 +182,3 @@
 	// The batik plugins are transitively fetched through GMF_Runtime sdk's org.eclipse.gmf.runtime.thirdparty
 	// see the pom.xml under main/site
 }
-
-
-
-//location "http://download.eclipse.org/tools/orbit/downloads/drops/R20181128170323/repository/" orbit-last {
-// com.google.guava lazy
-//}
-
diff --git a/tutorial/org.eclipse.efm.tutorial.thermostat/.classpath b/tutorial/org.eclipse.efm.tutorial.thermostat/.classpath
index b862a29..ca3785c 100644
--- a/tutorial/org.eclipse.efm.tutorial.thermostat/.classpath
+++ b/tutorial/org.eclipse.efm.tutorial.thermostat/.classpath
@@ -1,6 +1,6 @@
 <?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.8"/>

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

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

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

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

diff --git a/tutorial/org.eclipse.efm.tutorial.thermostat/META-INF/MANIFEST.MF b/tutorial/org.eclipse.efm.tutorial.thermostat/META-INF/MANIFEST.MF
index 68bec75..aadaaea 100644
--- a/tutorial/org.eclipse.efm.tutorial.thermostat/META-INF/MANIFEST.MF
+++ b/tutorial/org.eclipse.efm.tutorial.thermostat/META-INF/MANIFEST.MF
@@ -8,5 +8,5 @@
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.ui.cheatsheets;bundle-version="3.5.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy